2011-07-31 15 views
0

私が開発しているサイトでは、imagejpeg()を使ってすべての画像を渡す必要があるので、(私のサイトはJPG、BMP + PNGアップロードのみを受け入れるので) BMPおよびPNGをJPGに転送する必要があります。私はそれを介して通常のBMPを渡すとき http://forums.codewalkers.com/php-coding-7/how-to-convert-bmp-to-jpg-879135.htmlPHPでBMPをJPGに変換する

スクリプトが正常に動作します:

は今、私はここで見つけるスクリプトを使用BMPに変換します。

今、私は問題が)(imagecreatefrompngを介して変換したPNGを有し、そしてしばらく私が通過しようとした

....それはMIME型画像/ X-MS-BMPを有し実現しました画像BMPのスクリプトを私は次のエラーを取得:誰もがこの前accrossに来た場合

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

は、助けてください。 コードを見る必要がある場合は、私に知らせてください。

ありがとうございました。

編集: は言及することが有用であるかもしれませんが、エラーはこの1つのSI(上記のリンクからなど)で発生した行:

$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タイプを与えている)あなたはそれを与えているファイルのように見えるということですと仮定ファイル内容が "BM"識別子で始まらないため、BMPファイル私。ファイルを添付すると、おそらく誰かが本当に何を識別できるのだろうか。

私はこの問題に使用されてきた別の解決策が必要な形式に、彼らが何であれ、ほとんどの種類のファイルを変換するためには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); 

は、Windows用のImageMagickを取得し、他のことができますプラットフォーム: http://www.imagemagick.org/script/binary-releases.php

関連する問題