PHPでpngファイルのリサイズについての質問です。

phpのバージョンはPHP4(4.4.8)となります。

透過pngファイルをリサイズすると透明部分が黒くなってしまいます。
以下は現在のファイルです。

<?php

$file = "./p1.png";

$aaa = imagecreatefrompng($file);


$bbb = imagecreatetruecolor(100, 100);

imagecopyresized($bbb, $aaa, 0, 0, 0, 0,
100, 100,
500, 500);



mb_http_output("pass");

imagepng($bbb,"./resize.png",100);
?>

追加する関数などあれば教えてください。

回答の条件
  • 1人5回まで
  • 登録:2008/02/02 18:51:19
  • 終了:2008/02/02 20:12:20

回答(2件)

id:hidering No.1

hidering回答回数59ベストアンサー獲得回数32008/02/02 19:21:38

ポイント50pt

imagealphablendingという関数を使うと透過します。

以下のページを参考にしてください。

http://php.atseason.com/?eid=306360

id:t_yasu

早速のご回答ありがとうございます。

$bbb = imagecreatetruecolor(100, 100);

の下に1行追加しました。

imagealphablending($bbb, true);

上記だけだと「透明部分は黒のまま」でした。

「true」を「false」にすると「黒ではなく白」になりました。

何か足りていないのでしょうか?

2008/02/02 19:39:55
id:hidering No.2

hidering回答回数59ベストアンサー獲得回数32008/02/02 19:58:48

ポイント50pt

透過色で塗りつぶす必要があったようです。

私が透過PNGをリサイズしたときのソースです。

引数をFIXしましたが、必要に応じて変更してみてください。

$bbb = imagecreatetruecolor($new_width, $new_height);

imagealphablending($bbb, false);

imageSaveAlpha($bbb, true);

$fillcolor = imagecolorallocatealpha($bbb, 0, 0, 0, 127);

imagefill($bbb, 0, 0, $fillcolor);

imagecopyresampled($bbb, $aaa, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

id:t_yasu

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

教えていただいたプログラムで無事解決です。

また機会があればお願いいたします。

2008/02/02 20:11:29

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • PHP PNG画像のリサイズ **PNG画像リサイズするプログラムのメモ &lt;?php $img = ImageCreateFromPNG($_SERVER[&quot;DOCUMENT_ROOT&quot;].&quot;/images/&quot;.$_GET[&quot;name&quot;].&quot;.png&quot;); $width = ImageSx($img); $height = Im
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません