【发布时间】:2013-05-08 21:43:02
【问题描述】:
我有一个 PHP 脚本,它扫描目录中的图像,调整找到的任何图像的大小并将它们保存回来,覆盖原始图像。 除了从图像中去除元数据之外,它运行良好。
我找到了一个工具包,它可以操作元数据,包括提取元数据并将其写入图像。 在this page 上,它解释了如何执行此操作(在页面底部)。
所以我将它添加到我的代码中但遇到了问题 - 它不会将元数据写入调整大小的图像。 我显然遗漏了一些东西,但似乎无法弄清楚是什么(可能是我缺乏编码技能)并且想知道是否有人可以发现我的错误并提出更正建议。
以下是代码的相关部分:
这仅用于确认找到哪些图像并包含元数据 - 通过以 html 格式打印它
echo " $file <br> " ;
$filename = $file;
$exif_data = get_EXIF_JPEG( $filename );
echo Interpret_EXIF_to_HTML( get_EXIF_JPEG( $filename ), $filename );
这是然后调整图像大小并保存它的代码,并且应该将meatada写入它 - 但没有
$new_image = imagecreatetruecolor($new_width,$new_height);
ImageCopyResized($new_image, $tmp_image,0,0,0,0, $new_width, $new_height, $width, $height);
//Grab new image
imagejpeg($new_image, $target_path);
$image_buffer = ob_get_contents();
ImageDestroy($new_image);
ImageDestroy($tmp_image);
echo " $file resized to $new_width x $new_height <br> \n";
echo str_pad('',4096)."\n";
$jpeg_header_data = put_EXIF_JPEG( $exif_data, $jpeg_header_data );
put_jpeg_header_data( $filename, $filename, $jpeg_header_data );
ob_flush();
flush();
这是将重写代码放在错误位置的情况 - 还是其他原因?
感谢您的任何建议。
【问题讨论】:
-
您是否遗漏了一些代码?我看不到您在哪里创建/初始化变量“$exif_data”
-
bart,代码的第一部分包含 $exif_data 的创建部分 - 就在它打印之前。
标签: php metadata image-resizing