イムを変換した後、ファイルに新たな画像データを書き込ん:、画像を撮るグレースケールに変換して、グレースケール画像を保存するには、次のコードを使用してグレースケールのphpに
$imagename = "$imagename"; // path to previously uploaded color jpeg
$im = ImageCreateFromJpeg($imagename);
$imgw = imagesx($im);
$imgh = imagesy($im);
for ($i=0; $i<$imgw; $i++)
{
for ($j=0; $j<$imgh; $j++)
{
$rgb = ImageColorAt($im, $i, $j);
$rr = ($rgb >> 16) & 0xFF;
$gg = ($rgb >> 8) & 0xFF;
$bb = $rgb & 0xFF;
$g = round(($rr + $gg + $bb)/3);
$val = imagecolorallocate($im, $g, $g, $g);
imagesetpixel ($im, $i, $j, $val);
}
}
$grayimgpath = "step2cache/".$saltname."_gray.jpg"; //$saltname is a randomly generated image name
$fh = fopen($grayimgpath, 'w') or die("can't open file");
fwrite($fh, $im);
fclose($fh);
とき、私の問題は、ありますこのファイル、その空白、15バイトにアクセスします。
ここには何が欠けていますか?
なぜですか?ちょうど興味深い – mrpatg
'$ im'はファイルのバイナリコンテンツではなく、GDで定義された内部構造を含むPHPオブジェクトです。あなたがファイルに書き込むときには、おそらく '(string)$ im'と同じテキスト表現を書いています。実際に私の心を越えていた – NOtherDev
、説明のためにありがとう – mrpatg