我听说处理上传图像的最佳方法是使用GD库“重新处理”它们并保存处理过的图像.见:PHP image upload security check list
我的问题是如何在GD中“重新处理”?这究竟意味着什么?我不太了解GD库,我担心我会搞砸它…
所以,如果有人之前做过这个,你能给我一个例子吗?
(我知道,另一个选择是使用ImageMagick.对于ImageMagick,我在这里找到了答案:Remove EXIF data from JPG using PHP,但我现在不能使用ImgMagick.顺便说一下..删除EXIF数据意味着在这种情况下完全重新创建图像?)
(如果有兴趣的话,我正在使用Zend Framework.)
解决方法:
如果用户上传了JPEG文件,您可以执行以下操作来重新处理它:
$newIm = @imagecreatefromjpeg($_FILES['file']['tmp_name']);
if (!$newIm) {
// gd Could not create an image from the source
// most likely, the file was not a valid jpeg image
}
然后,您可以使用imagedestroy()丢弃$newIm图像并使用用户上传的文件,或者从GD中保存图像并使用它.保存GD图像可能存在一些问题,因为它不是原始图像.
另一个简单的方法是检查图像文件的标题(前几个字节)以确保它是正确的;例如,所有JPEG文件都以0xff 0xd8开头.
另请参阅imagecreatefromstring(),您还可以使用getimagesize()对上载的图像执行类似检查.