は、私はまた、PNG形式のファイルは、白い背景を持ってできるように画像のアップロードにPHPのimagecolorallocate()とimagefill()を使用します(この記事のように:imagescreatetruecolor with a white background):PHP GD複数の画像が白い背景になっています - 警告?
ここは、それが関係するコードの一部です
警告:
//create new images $nimgac_0=imagecreatetruecolor($maxw_img0,$maxh_img0); //img1 $nimgac_1=imagecreatetruecolor($maxw_img1,$maxh_img1); //img2 $nimgac_2=imagecreatetruecolor($maxw_img2,$maxh_img2); //img3 $nimgaa_0=imagecolorallocate($nimgac_0,255,255,255); $nimgaa_1=imagecolorallocate($nimgac_1,255,255,255); $nimgaa_2=imagecolorallocate($nimgac_2,255,255,255); $nimga_0=imagefill($nimgac_0,0,0,$nimgaa_0); $nimga_1=imagefill($nimgac_1,0,0,$nimgaa_1); $nimga_2=imagefill($nimgac_2,0,0,$nimgaa_2); //create images from temp folder if ($type=="jpg") { $nimgb_0=imagecreatefromjpeg("../imga/".$_FILES['file']['name']); $nimgb_1=imagecreatefromjpeg("../imga/".$_FILES['file']['name']); $nimgb_2=imagecreatefromjpeg("../imga/".$_FILES['file']['name']); } if ($type=="png") { $nimgb_0=imagecreatefrompng("../imga/".$_FILES['file']['name']); $nimgb_1=imagecreatefrompng("../imga/".$_FILES['file']['name']); $nimgb_2=imagecreatefrompng("../imga/".$_FILES['file']['name']); } imagecopyresized($nimga_0,$nimgb_0,0,0,0,0,$nwidth_0,$nheight_0,$width,$height); imagecopyresized($nimga_1,$nimgb_1,0,0,0,0,$nwidth_1,$nheight_1,$width,$height); imagecopyresized($nimga_2,$nimgb_2,0,0,0,0,$nwidth_2,$nheight_2,$width,$height); imagejpeg($nimga_0,"../imga/".$_FILES['file']['name'],80); imagejpeg($nimga_1,"../imga/".$imgname_1,80); imagejpeg($nimga_2,"../imga/".$imgname_2,80);
は、私は、この警告を取得)(imagecopyresizedパラメータ1は、ライン上で...与えられたリソース、 ブール値であることを期待114
警告:imagecopyresized()は、パラメータ1は、リソースに与えられ ブールことを期待...ラインで115
警告:imagecopyresized()は、パラメータ1は、リソースに与えられ ブールことを期待...ライン116上
警告:imagejpeg()は、パラメータ1はリソースであることを期待し、 に...ライン117
警告上の所与のブール:imagejpeg()は、パラメータ1はリソースであることを期待し、 に...に与えられたブールライン118
警告:imagejpeg()パラメータ1は、リソース、ブールで を与えることを期待...ラインで119
警告:imagedestroy()は、パラメータ1はリソースであることを期待し、で与えられるブール ...ライン120上
警告:imagedestroy()は、パラメータ1は、ライン上に... 121
警告リソース、 ブールを与えることを期待:パラメータ1リソースことを期待)(imagedestroy、ブール は、で与えられる...ライン上122
immagecolorallocate()およびimagefill()がないコードは完全に正常に動作します。しかし、私は上記の投稿されたコードに何らかのエラーや相違点がありません。
誰でもいいですね。前もって感謝します!
PS:すべての画像をjpgとして保存したいので、pngをjpgに変換しています。
EDIT 3(申し訳ありませんが、私は混乱しました):
print_r(getimagesize($_FILES['file']['tmp_name']));
戻り
アレイ([0] => 354 [1] => 332 [2] => 2 [3] = >幅= "354" 高さ= "332" [ビット] => 8 [チャネル] => 3 [MIME] =>画像/ JPEG)
ので、すべてが... if($size['2']==3) {$type="jpg";}
と
あなたにマークをありがとう、それは)imagecopyresized(と行です。私がimage allocateとimagefillを使わないと警告が出ないので、私はそれがイメージであるべきだと思った? – Chris
これは警告が発生する場所ですが、以前のGD呼び出しが失敗して偽の値を返したときに、実際の問題が以前に発生しました。あなたはコピーアウトされた議論のどれがそれを引き起こしているのか(src img、dst img、etc ...)、どれほど偽の値を持っているのかを把握しなければなりません。 –
はい、私はimagecolorallocate()とimagefill()の2つの呼び出しが完全に正常に動作していない同じコードでなければならないと言いました。そう、私はスタックオーバーフローの他の質問を参照しました。私のコードはまさにそこに似ていると思ったが、おそらく私はいくつかのエラーがある...どうすればそれらが失敗する原因を見つけることができますか? – Chris