2012-02-01 29 views
0

JPGファイルはアップロードできますが、PNGファイルはアップロードできません。
PNG画像が保存されていませんが、この‰PNG À À°£ûïS JÄž Ÿ¬™Ù<íû;アップロードされたPNGファイルを保存できません

私のコードouputsこのようなものです:私は間違って何をやっている

$source_gd_image = imagecreatefrompng($sourcefile); // <-- If PNG file 
    $target_gd_image = imagecreatetruecolor($target_image_width, $target_image_height); 

    if($source_image_type == IMAGETYPE_PNG) { 
    imagealphablending($target_gd_image, true); // Should this be false? 
    imagesavealpha($target_gd_image, true); 
    imagepng($target_gd_image); // <-- This is where the gibberish is outputed 
    } 

    if($source_image_type == IMAGETYPE_JPEG) { 
    imagecopyresampled($target_gd_image, $source_gd_image, 0, 0, 0, 0, $target_image_width, $target_image_height, $source_image_width, $source_image_height); 
    imagejpeg($target_gd_image, $target_file, $quality); 
    } 

    imagedestroy($source_gd_image); 
    imagedestroy($target_gd_image); 

+1

試行追加'ヘッダ( '画像/ PNGコンテンツタイプ:')の$ TARGET_FILEを仮定

を使用することを意味し、所望の出力ファイル名です。 – bfavaretto

答えて

4

imagejpegと同じように、ファイルに保存する場合はa file name as the second parameterを指定する必要があります。それ以外の場合は、ブラウザに出力されます。 `出力する前に、:

imagepng($target_gd_image, $target_file); 
+0

ああ!私はいつもDOC 'bool imagepng(リソース$ image [、string $ filename [、int $ quality [、int $ filters]])')を理解できません。 target_file'です。 – Steven

+1

@スティーブン:確かに、大括弧はオプションの要素を示しています。もしあなたが$ qualityを入れたいなら、$ filenameのために何かを入れなければなりません。この表記は、言語の文書化では非常に一般的なので、知っておくと便利です。また、PNGはロスレスであるため、「品質」は実際には誤った名前であることに注意してください。圧縮レベルを設定しますが、実際の画像データではなくファイルサイズにのみ影響します。 –

+0

背景はまだ黒です。私は 'imagealphablending'をtrueとfalseに設定しようとしましたが、私は同じ結果を得ます。 – Steven

関連する問題