如何将.tmp文件的内容转换为PNG
问题描述:
我有一个PHP脚本,如果用户上传的图像文件不是.png图像,它将使用Imagemagick将其转换为.png,然后将其保存为服务器。但是它只能使用HTML表单中的.tmp文件,所以它必须转换CONTENTS,同时保持.tmp(及其文件名)完整。这是到目前为止我的代码:如何将.tmp文件的内容转换为PNG
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版本?
编辑:它也可能是脚本应该正常工作,并且问题是完全不同的。不确定在这一点上。
答
如果你要使用IMAGICK库,那么你可以使用这样的东西: ...需要解释你如何得到.tmp文件,我猜想通过在你的网站上使用一个表单... so ...
..得到这个职位的文件
// 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);
看看是否能为你工作...
+0
对不起,我应该更具体。 .tmp来自基本的html文件提交表单。这工作虽然,谢谢! –
我感到困惑的问题是什么。这里的代码是否工作?如果不是,它是做什么的?你期望它做什么? – Mike