使用php下载图片的时候遇到md5问题, 源图片通过http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png下载,
原图和curl获取到图片源时的md5一致,但使用php中的fwrite后就不行.
问sf的朋友们: 如何用php保存图片的时候使得md5值不变!
代码如:
立即学习“PHP免费学习笔记(深入)”;
<code class="lang-php">/** * 加载图片 * */ $save_dir = APP.'tmp'.DS; $url = 'http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png'; $img = http_client_request( $url ); echo 'Curl获取的二进制流文件MD5值:<br>'.md5($img); //图片md5 $fp2=@fopen($save_dir.'baidu-save.png','a'); fwrite($fp2,$img); fclose($fp2); unset($img,$url); echo "\n"; $fmd5 = '通过fwrite保存图片MD5:<br>'.md5_file($save_dir.'baidu-save.png'); echo $fmd5; echo '原图md5:<br>'.md5_file($save_dir.'baidu-org.png'); </code>
结果如:
Curl获取的二进制流文件MD5值: 329b15e8ba7234317dc663f8ee663702 通过fwrite保存图片MD5: d477312948ef7bd72c4209b8db707f68 原图md5: 329b15e8ba7234317dc663f8ee663702
使用php下载图片的时候遇到md5问题, 源图片通过http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png下载,
原图和curl获取到图片源时的md5一致,但使用php中的fwrite后就不行.
问sf的朋友们: 如何用php保存图片的时候使得md5值不变!
代码如:
立即学习“PHP免费学习笔记(深入)”;
<code class="lang-php">/** * 加载图片 * */ $save_dir = APP.'tmp'.DS; $url = 'http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png'; $img = http_client_request( $url ); echo 'Curl获取的二进制流文件MD5值:<br>'.md5($img); //图片md5 $fp2=@fopen($save_dir.'baidu-save.png','a'); fwrite($fp2,$img); fclose($fp2); unset($img,$url); echo "\n"; $fmd5 = '通过fwrite保存图片MD5:<br>'.md5_file($save_dir.'baidu-save.png'); echo $fmd5; echo '原图md5:<br>'.md5_file($save_dir.'baidu-org.png'); </code>
结果如:
Curl获取的二进制流文件MD5值: 329b15e8ba7234317dc663f8ee663702 通过fwrite保存图片MD5: d477312948ef7bd72c4209b8db707f68 原图md5: 329b15e8ba7234317dc663f8ee663702
是不是因为已经存在 baidu-save.png,然后 fopen 用了参数 'a',于是加到尾部了。
改为 'w' 或者 'wb' 试试。
<code>xxd logo_white_ee663702.png > logo_white_ee663702.hex xxd baidu-save.png > baidu-save.hex diff logo_white_ee663702.hex baidu-save.hex </code>
fwrite($fp2,md5($img));
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号