>  기사  >  백엔드 개발  >  图片存储 - 使用PHP保存图片同时保持源来图片的md5值

图片存储 - 使用PHP保存图片同时保持源来图片的md5值

WBOY
WBOY원래의
2016-06-06 20:43:021676검색

使用php下载图片的时候遇到md5问题, 源图片通过http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png下载,
原图和curl获取到图片源时的md5一致,但使用php中的fwrite后就不行.

sf的朋友们: 如何用PHP保存图片的时候使得md5值不变!

代码如:

<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值不变!

代码如:

<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));

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.