2011-07-31 177 views
0

在我正在開發的網站中,我需要能夠通過imagejpeg()傳遞所有圖像,所以我決定(因爲我的網站只接受JPG,BMP + PNG上傳)首先將BMP和PNG格式轉換爲JPG格式。在BMP中將BMP轉換爲JPG

現在到BMP轉換我用在這裏找到腳本: http://forums.codewalkers.com/php-coding-7/how-to-convert-bmp-to-jpg-879135.html

該腳本正常工作,當我穿過它正常的BMP。現在

,我有一個PNG,我曾通過imagecreatefrompng轉換問題(),並在一段時間後,我意識到它有mime類型圖像/ X-MS-BMP ....

我試圖通過通過BMP腳本的圖像,但我得到以下錯誤:

Warning: imagecreatefromgd() [function.imagecreatefromgd]: 'C:\Users\Tom\AppData\Local\Temp\GD50C1.tmp' is not a valid GD file in C:\xampp\htdocs\test\cropimage\FCreateImageFromBMP.php on line 10

如果有人來過這個之前,請幫助。 如果您需要查看任何代碼,請告訴我。

在此先感謝,湯姆。

編輯: 可能提有用,發生錯誤的(如從上面的鏈接)線路S1這樣一條:

$tmp_name = tempnam("/tmp", "GD"); 

回答

1

您鏈接到撈出如果需要幾個前提條件故障代碼:

if(!($src_f = fopen($src, "rb"))) { 
... 
if(!($dest_f = fopen($dest, "wb"))) { 
... 
if($type != 0x4D42) { // signature "BM" 

所以假設源和TMP文件被讀/寫的,它看起來像你給它(被髮送爲.png卻給人以BMP MIME類型)的文件,其實不是BMP文件,因爲文件內容不以「BM」標識開始IER。如果你附加文件,也許有人可以確定它是什麼。

我已經習慣了這種問題的另一個解決方案是使用ImageMagick的convert命令將大多數文件類型,不管他們可能是,在所需的格式:

// convert uses the file extension to determine the output format, so 
// change .jpg to whatever you'd like 
$tmp_name = tempnam("/tmp", "convert") . '.jpg'; 
exec('c:\path\to\imagemagick\convert ' . $inputFile . ' ' . $tmp_name); 

你可以得到ImageMagick的Windows和其他平臺在這裏: http://www.imagemagick.org/script/binary-releases.php