我有一个PHP脚本,如果用户上传的图像文件不是.png图像,它会使用Imagemagick将其转换为.png,然后再保存到服务器。但是它只能使用HTML表单中的.tmp文件,所以它必须转换内容,同时保持.tmp(及其文件名)不变。到目前为止,这是我的代码:
if (exif_imagetype($tmpName) != IMAGETYPE_PNG) {
$uploadOk = 0; // don't upload later
$im = new Imagick("$tmpName");
$im->setImageFormat( "png" );
file_put_contents($tmpName, '');
file_put_contents(file_get_contents($im), $tmpName);
if (exif_imagetype($tmpName) != IMAGETYPE_PNG) { //check again
// try again or throw error somehow?
} else {
$uploadOk = 1;
}
} else {
$uploadOk = 1;
}
如何正确使用Imagick将临时文件的内容转换为原始(非png)图像的png版本?
编辑:也可能是脚本应该正常工作,问题是完全不同的。目前还不确定。
答案 0 :(得分:0)
如果您要使用IMAGICK库,那么您可以使用以下内容: ...需要解释你如何获得.tmp文件,我想通过你网站上的一个表格...所以......
..获取帖子文件
// This equals to 'some/server/path/temp/filename.tmp'
$original_image = $_FILE['tmp_name'];
// Lets work on the Imagick...
$img = new Imagick($original_image);
$img->setImageBackgroundColor('white');// red, black..etc
$img = $img->flattenImages(); // Use this instead.
$img->setImageFormat('png');
$new_image_name = 'nice_image_name.png';
$img->writeImage($new_image_name);
看看这对你有用......