2011年10月14日

かなり恥ずかしい間違いに気づいて imagepng 問題はやっと解決


今日の記事は画像作成の問題が完全に解決した瞬間について(^^;)
明日からはちゃんと先に進みます。


画像作成の問題は昨日やっと半分だけ解決できたので、
今日はその続きです……しつこくてごめんなさいm(__)m

このブログは自分のための学習記録でもあるので、
一応全て書き留めておきたいのです(ありえないミスも含めて^^;)

だからここ数日の日記はかなり見苦しいですが、
「こいつアホだな〜」と笑って許していただければ幸いです……。

まず最初に修整して試してみたのがこちらのコード↓

<HTML>
<HEAD>
<TITLE>imagepng関数の例</TITLE>
</HEAD>
<BODY>

<?php
header("Content-Type: image/png");

$image = imagecreate(200,100);

$green = imagecolorallocate($image, 0, 255, 0);
imagefill($image, 0, 0, $green);

//ファイルに出力
imagepng($image, "green.png");

//ブラウザに表示
print("<IMG SRC=\"green.png\">");
?>

</BODY>
</HTML>

また HTMLコード復活です。

というか、昨日 HTML と image/png が一緒にあるのがダメと気づいて、
HTMLコードを全部取ることで imagepngに引数を
1つだけ渡すパターンは成功したわけだけど、

そこからヒントを得ました。

これは本に載ってる imagepng関数のサンプルコードを参考にしたものなんだけど、
ファイルに出力する行の後に、IMG SRC が入った表示するための行が入ってるんです。

そうか、ブラウザに出力するだけなら imagepng だけでいいけど
ファイルに出力の場合はファイル名を渡して、さらに表示させなきゃいけないんだ!
と気づいたんです。

でも結果は……↓

画像ファイル "http://localhost/imagecreate.php" は壊れているため、表示できませんでした。

ちっ。
でも方向は間違ってないと思うんだけどなぁ。

次に小さい修整を加えてみました(PHP部分だけ載せますね)↓

<?php
$image = imagecreate(200,100);

$green = imagecolorallocate($image, 0, 255, 0);
imagefill($image, 0, 0, $green);

header("Content-Type: image/png");
//ファイルに出力
imagepng($image, "green.png");
//ブラウザに表示
print("<IMG SRC=\"green.png\">");
?>

また header の位置を imagepng の前に持ってきたのに加えて、
出力前の余計なスペース・改行を省くっていうのも試してみたんだけど
やっぱダメでした(>_<)

次に試したのがこれ↓

<?php
$image = imagecreate(200,100);

$green = imagecolorallocate($image, 0, 255, 0);
imagefill($image, 0, 0, $green);

//header("Content-Type: image/png");
//ファイルに出力
imagepng($image, "green2.png");
?>

あるサイトで見かけた情報を参考にして、header部分をコメントアウトしてみました。
header部分があると壊れた画像と認識されるみたいなので、
これでエラーが表示されるかどうか試してみたのです。

結果、真っ白でメッセージはなくなり、green2.png だけ作成されました。

ここでや〜っと気づきました。

本のサンプルもよく見たら、header部分がありません!
他のサイトでも、ファイル名も渡されてる例には header部分がありません!

だからもちろん取りました↓

<HTML>
<HEAD>
<TITLE>imagepng関数の例</TITLE>
</HEAD>
<BODY>

<?php
$image = imagecreate(200,100);

$green = imagecolorallocate($image, 0, 255, 0);
imagefill($image, 0, 0, $green);

//ファイルに出力
imagepng($image, "green3.png");
//ブラウザに表示
print("<IMG SRC=\"green.png\">");
?>
</BODY>
</HTML>

ここで初めて green3.png というファイルが作成&表示されました〜\(^O^)/

はぁ、一応できた。
まだ頭ん中ぐるぐるですが……(^^;)


<ご案内>----------------------------------------------------------------------------------------

nabecchiDRM.jpg

なべっち式ダイレクトレスポンスマーケティング(DRM) 22,800円

----------------------------------------------------------------------------------------<ご案内>



参考にさせていただいたのはこちらのページです↓
phpで描画ができません - XREA&CORE SUPPORT BOARD
イメージ関数の使い方について - 教えて!goo

ありがとうございました<(_ _)>


今回の問題に関するシリーズはこちらです↓
画像関数は出だしからつまづく(-_-)
画像を作成できない〜(>_<)
PNGの生成、でもまずは gd_info関数から
画像作成の問題が解決しました!
画像作成の問題の続き……
かなり恥ずかしい間違いに気づいて imagepng 問題はやっと解決
imagepng でブラウザとファイルに画像を出力 - まとめ


関連する関数はこちらです↓
今では懐かしい(?)imagecreate関数
imagecreatefrompng関数はもう何度使ったかなぁ
imagepng関数は挑戦というより復習です
header関数
imagecolorallocate関数はちょっと楽しい♪
imagecolorallocate関数を学びながら imagefill関数も予習
imagefill関数はマスターできた!?



posted by れい at 17:37| Comment(2) | 画像関数 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
この記事のおかげで解決しました 涙
Posted by at 2015年08月11日 02:10
こんなブログでもお役に立てたのなら嬉しいです(^^)
Posted by れい at 2015年08月11日 17:21
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。