php 的 pack 函数写出图片文件遇到的问题

2016-08-23 15:05:21 +08:00
 hard2reg
$buf = file_get_contents("photo.dat");
$buf = unpack("C*", $buf);
$GLOBALS["magic"] = $buf[1] ^ 0xff;
$photo = array_map("my_xor", $buf);
// 这上面都是对的
$photo = pack("H*", $photo);
file_put_contents("photo.jpg", $photo);

结果写出的图片大小才几个字节。。。 想知道是哪里错了。。。 实在 google 不出来

2476 次点击
所在节点    PHP
21 条回复
hard2reg
2016-08-25 14:16:19 +08:00
@yao978318542

$buf = unpack('C*', $buf);
$magic = $buf[1] ^ 0xff;
$photo = array_map(function($b){return pack('C', $b ^ $GLOBALS['magic']);}, $buf);
$file_name = md5(microtime()) . '.jpg';
$b = file_put_contents($file_name, $photo);

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/301194

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX