• ベストアンサー
  • 困ってます

PHP4 透過画像を合成する方法を教えてください。

php4で、画像処理についてです。 画像Aと背景画像Bの二つがあり、 背景画像Bの上に画像Aをのせ、 新しい画像として出力する。 ※画像A、Bはpngファイルです。 (gifで合成すると画像のふちが粗くなるのでpngでやりたい) imagecopymergeで、合成まではできたのですが、 画像Aのpngの透過がうまくいきません。 photoshopなどで画像を書き出すときは透過されているのですが、 合成すると、透過されていない状態になってしまいます。 imagesavealphaとかが関係あるのでしょうか? 何卒よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数371
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • mpx
  • ベストアンサー率71% (149/209)

合成の前に、画像Aのリソースからimagecolortransparentで色抜き処理をしていますか?

参考URL:
http://jp2.php.net/manual/ja/function.imagecolortransparent.php

共感・感謝の気持ちを伝えよう!

質問者からのお礼

遅くなってしまいすみません。 上記の方法を試してみました。 やはり、透明色をしていできないので、画像Aの背景色を白にして、 imagecolortransparentで色抜き処理をしてみました。 結果として、GIFと同じ透過の処理になりました。 (画像の縁にジャギがでてしまう) pngの透過はできないのでしょうか・・・ アドバイスありがとうございました。 もう少し他にないかまってみようと思います。

質問者からの補足

ご回答ありがとうございます。 試してみようと思うのですが、 すでにpngファイルで、色抜きしたい部分を透過で書き出しているのですが、 透明の部分の色をどうしてしたらいいのか分かりません。 逆に白(または黒)バックにして、色指定して抜かないといけないのでしょうか。 まだ試していないのですが、その場合GIFみたいが、縁にジャギができないかが気になります。 試してみてからまた書き込みさせていただきます。

関連するQ&A

  • 透過して画像を背景に貼り付ける方法

    背景に写真を切り抜いた画像を貼り付けてHPにUPしたいと思っていますが、自分で色々やってみましたが出来ません。 jpgの背景画像にjpgの写真(綺麗に形を切り抜いた物)を合成はできるのですが、 切り抜いた画像の周りを透過させて、別の背景に貼り付けて、合成したいのです。 透過させると、gifかpngで保存ですよね。でその画像を背景と合成させるのができません。背景にそれを貼り付け、コピーなどすると、透過できなくて、画像の周りに四角く枠ができます。画像編集ソフトで、gifが読み込めません。でpngに変更して、保存すると透過出来なくて! 困っています。最初から素材でpng透過してある物も、出来ません。ソフトはwinxpに標準でついているもの(フォトレタッチとビルダーv6.5ライト)意外はIrfan とPict Bear(ペイントソフト)のようなものしかありません。 あまり、画像処理ソフトの使い方が分からずにいます 上記のフリーソフトも使いこなせずにいる、初心者です。 良い方法があったら教えてください 市販のソフトでないと、このような事は出来ないのですか。 どうぞ宜しくお願いいたします 説明が分かりづらくてすいません

  • PHP5で画像の合成(アルファブレンディング)

    はじめまして。 よろしくお願い致します。 PHP5でA画像の上にB画像を合成する際に B画像の透過度を設定してアルファブレンディングしたいと思っています。  ※ 透過GIF/pngのような部分的な透過ではなく、    B画像全体を透明度x%を設定してA画像に重ねる 条件としては、  ・ A、B画像ともにjpegファイル  ・ 可能であればGDライブラリで可能な方法    ※ 無ければ別のイメージライブラリでも結構です。 以上 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 画像を透過後、合成したら汚い

    年賀状を作成していて子供や愛犬の形にそって切り取りをしたんです。 それをjtrimというフリーソフトで透過してpngで保存されています。 背景画像と切り取った画像を合成したのですがその透過後、画像の周りの部分が汚くなっちゃうんです。 なので合成すると変。。あきらかに合成しましたって後がある感じです。 なんと書いたら良いのか。。表現したら良いのかわからないんですが、 切り取りと透過のソフトはフリーソフトをダウンロードして使いました。 これで分かる方が居ましたらアドバイスお願いします。

  • PHPで行う最速の画像合成を教えて下さい。

    PHPを使用して、画質をあまり落とさず、1秒以下の処理時間で23個の画像を合成する方法(ロジック)を教えて下さい。 画像の合成をPHPで下記のソースのように組みましたが、横1120×縦2016のPNGファイル(容量は1ファイル当たり約 6.6KB~140KB)を23個合成して一つのファイルにする処理が終了すると、結果として合成された画質はキレイ(10段階中10の画質)ですが、処理時間が5.5秒程かかります。 そこで、合成素材の23個のファイルを全て半分の大きさ横560×縦1008にすると、結果として合成された画像の画質は結構落ちました(10段階中6の画質)が、処理時間は2.5秒程で終わりました。 希望としては、画質をあまり落としたくないので、小さくても横560×縦1008の画像を23個合成して処理時間を1秒以下にしたいのですが、以下のソースのやり方よりも処理が早く終わる やり方をご存知の方はいませんか? ご存知の方は、ご教授願います。 ちなみに、画像の種類は、使用できる色の種類が多いPNG形式で1秒以下の処理時間を実現したいです。 宜しくお願い致しますm(__)m ■環境 windows vista xampp/apache 2.2.4 PHP Version 5.2.3 //23個のファイルをロード $img1 = imagecreatefrompng(一個目のファイル); $img2 = imagecreatefrompng(二個目のファイル); ~ $img23 = imagecreatefrompng(23個目のファイル); //(白)の色を作成 $white1 = imagecolorallocate($img1, 255, 255, 255); $white2 = imagecolorallocate($img2, 255, 255, 255); ~ $white23 = imagecolorallocate($img23, 255, 255, 255); //白色を透過色へ imagecolortransparent($img1, $white1); imagecolortransparent($img2, $white2); ~ imagecolortransparent($img23, $white23); //それらをひとつの画像に統合($img1を背景とすると。) imagecopymerge($img1, $img2, 0, 0, 0, 0, 1120, 2016, 100); imagecopymerge($img1, $img3, 0, 0, 0, 0, 1120, 2016, 100); ~ imagecopymerge($img1, $img23, 0, 0, 0, 0, 1120, 2016, 100); //マージした後いらなくなった画像リソースをとりあえず解放 imagedestroy($img2); ~ imagedestroy($img23); imagepng($img1,出力ファイル名); imagedestroy($img1);

    • ベストアンサー
    • PHP
  • 画像透過について

    透過した写真の画像をpngファイルで保存したのですが、ウェブにアップするとグレーっぽい色の背景がついてしまいます。gifファイルで保存する以外はウェブでは背景がついてしまうのでしょうか?

  • 画像の透過処理の仕方を教えて下さい。

    フォトショップでイラストを描いてるのですが、いつも出来上がりの画像の周りが四角く囲われてます。 画像だけを抜き出せたら、背景にいろんな写真を持ってきて遊べるのに・・・。 透過処理というのがあるそうですが、どうやればいいのですか? また、透過処理をしなくても、写真やその他の画像と合成する方法があったら教えて下さい。

  • 透過合成した画像からの縮小コピーで黒塗りに!

    PHPの処理によって透過処理した画像と画像を合成して出来た画像(test.png)を単純に小さいサイズのPNG画像として コピーしたいのですが、黒塗りになってしまい、調べながら思考錯誤してみましたができません。 分かる方、どうかお知恵を貸して下さい。 下記は、黒塗りになってしまうソースです。 <?php $img = 'http://www.angelito.biz/test.png' ; // 読み込む画像のアドレス $size = 100 ; // リサイズするサイズ (大きい方の幅をこれに合わせる) if (!($irc = @imagecreatefromjpeg($img))) // jpeg として読み込んでみる if (!($irc = @imagecreatefrompng($img))) // png として読み込んでみる $irc = @imagecreatefromgif($img) ; // gif として読み込んでみる if (!$irc) { // 画像が正しく読み込めなかったときの処理 echo '×' ; exit ; } if (imagesx($irc) > imagesy($irc)) { $rrc = imagecreate($size, $size * imagesy($irc) / imagesx($irc)) ; } else { $rrc = imagecreate($size * imagesx($irc) / imagesy($irc), $size) ; } imagecopyresampled($rrc, $irc, 0, 0, 0, 0, imagesx($rrc), imagesy($rrc), imagesx($irc), imagesy($irc)) ; // jpgeg 画像として出力 header('Content-type: image/png') ; imagepng($rrc) ; ?> ■環境 windows vista xampp/apache 2.2.4 PHP Version 5.2.3

    • ベストアンサー
    • PHP
  • CS6でのPNG形式の透過画像の作成編集について

    CS6のフォトショップとイラストレーターを使用してPNG形式の透過画像を作りたいのですが、スムーズに作成、編集する方法を教えてもらえると嬉しいです。 フォトショップ上で加工、編集している場合は背景がチェッカーフラッグのようなブロック状になっていて、透過としてPNGで保存でき、そのファイルは透過PNGとして使えます。 しかし、同じファイルをイラストレーターで開いて、編集、保存すると背景が真っ黒になってしまいます。保存時には「透明部分」にチェックを入れて保存しているのですが、うまく行きません。 合成のときに使いたいフリー素材がAI形式なので一旦イラストレーターを使う必要があります。 気になったのは、はじめからイラストレーターで作ったファイルは透過保存できる点です。 編集時の背景も異なっていて、イラストレーターで作っているファイルは背景は白、保存時は背景がブロックパターンになっています。フォトショップで作った透過PNGを開くと編集時から背景が真っ黒で、保存時も同じく黒です。 色の形式、CMYK、RGB、インデックスカラーなどの違いが影響しているのでしょうか? (それぞれの使い分けはよくわかりませんが、合成するときに合成不可だった場合、モードを変えると合成できたりするので、その際に触るくらいです) イラストレーターで絵を描くのは苦手なので、フォトショップのドット絵的な感じで絵を描いて、AI形式のフリー素材を合成して、透過PNGとして仕上げたいのですが、どのようにしたら上手く行きますでしょうか? よろしくお願いします。

  • 画像の合成で透過の部分が白になる

    JTrimで画像の合成をするため、貼り付けたい画像の周辺を白く塗りつぶし、スポイドで透過(透過部分がチェック模様になる)、それをGIFで保存。 背景画像を開き、前述の画像を合成で貼り付けると、透過したはずの部分が白くなって、透過しません。 この部分を透過するには、どうしたらよいでしょうか。 ソフト:JTrim OS:Windows XP & Vista

  • PictBearの透過と合成について

    PictBearで、透過した画像を合成しようと思ったのですが、 合成しても、背景が黒になり透過したまま合成ができません。 合成せずに、透過した画像だけで開くと背景はブロックッチェック?に なっており背景は透過されているのだとおもいますが、 合成すると、背景が黒になってしまいます。 背景が透過されたまま、どうやって合成できるのでしょうか?