2017-06-02 401 views
-1

我有一个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版本?

编辑:它也可能是脚本应该正常工作,并且问题是完全不同的。不确定在这一点上。

+0

我感到困惑的问题是什么。这里的代码是否工作?如果不是,它是做什么的?你期望它做什么? – Mike

回答

0

如果你要使用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文件提交表单。这工作虽然,谢谢! –

相关问题