2017-06-02 406 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文件提交表單。這工作雖然,謝謝! –

相關問題