人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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);
?>

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

●質問者: t_yasu
●カテゴリ:ウェブ制作
✍キーワード:aaa PHP PNG バージョン ファイル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● hidering
●50ポイント

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

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

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

◎質問者からの返答

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

$bbb = imagecreatetruecolor(100, 100);

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

imagealphablending($bbb, true);

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

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

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


2 ● hidering
●50ポイント

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

私が透過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);

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ