• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:最も速い画像合成処理を教えて下さい。)

最速の画像合成処理方法とは?

このQ&Aのポイント
  • PHPを使用して、画質を落とさずに1秒以下の処理時間で23個の画像を合成する方法を教えてください。
  • 自宅PCとさくらのレンタルサーバーでの合成処理の結果を比較したところ、処理時間に差がありました。
  • eacceleratorのインストールによる高速化が失敗している可能性があります。それ以外の高速化方法についても教えてください。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

「色鮮かな画像」ってどんな画像のことでしょう? SVGにはimage要素があって、PNG等の画像を、SVG画像の一部として使うことができます。 http://www.hcn.zaq.ne.jp/___/SVG11-2nd/struct.html#ImageElement また、着せ替えなどだったら、JavascriptやFlash等を使って、クライアント側で並びかえとかを行なうのが普通でしょう。 サーバー側のプログラム(今回の場合なら、あなたが作ろうとしているPHPのスクリプト)では、最初の準備と、完成時の処理くらいしかやらないのが普通です、一秒毎に画像をリロードさせるような凶悪なことはしません。

yanagihk
質問者

お礼

度々のご回答ありがとうございます。 返事が遅くなってすみませんでした。 アバターのような着せ替えをしたかったのですが、今まで調べて分からず、 こういった質問できる場所でやっとこの方法を知り、他の方法はないものだと 思っていました。 おっしゃっている普通のやり方というのが、とても衝撃的です。 普通とおっしゃっているやり方がどうしても知りたいです。 参考となる書籍やサイトがありましたら、どうか教えて下さい。 お願いしますm(__)m ちなみに「色鮮かな画像」とは、ヤフーのアバターやGREEのアバターのような、きめ細かくはっきりとした色で表現されている画像のことです。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

・毎回合成しないといけないのでしょうか? ・23枚全部、毎回必要なのでしょうか? ・入力はPNGでないとだめなのでしょうか? ・出力はPNGでないとだめなのでしょうか? ・1秒以内でないとだめなのでしょうか? PNGの圧縮は、画像に適した最適化をこれと言ってやっているわけでは無いので、合成処理よりもファイル読み書きや圧縮/伸長に時間がかかっているのだと思います。設定次第では、サイズを犠牲にして速度優先、というのもありますが、劇的に変わるわけでもありません。 今の方法で1秒以内、ってもの凄いハイエンドサーバーでもないと無理なのでは? > 横1120×縦2016のPNGファイル(容量は1ファイル当たり約6.6KB~140KB) 画像サイズに対して、容量がえらく小さいように思います。ほとんど背景色で「絵」の部分はもっと小さい(100x100とか)とか、二値とか16色とか、そんなことは無いですか? 絵のサイズが小さいなら、1120x2016同士で合成するのではなく、その絵の範囲だけの画像を予め用意して、座標指定して合成するようにすれば、大分処理が減るはずです。 単純な画像なら、SVGのようなベクター型のフォーマットにすれば、サーバーでは合成は一瞬です。 今の方法の固執しないで、根本から考えなおしてはどうです?

yanagihk
質問者

お礼

ご回答ありがとうございます。 私の理想は、ヤフーのアバターのような鮮やかな画像の合成をストレスを感じない程度の 処理速度で行う事です。 教えていただいたSVGのようなベクター型を調べたところ、色鮮やかな画像とまではいかないと感じました。 毎回23枚の画像を合成するのは、パーツの種類が23種類あるからです。 画像サイズに対して容量が小さいものは、おっしゃる通り背景の画像で、一色で塗りつぶした単純なものです。最終的には、凝った絵の背景にしたいと考えています。 ご相談ですが… 23種類の絵を合成で重ねた場合、同サイズの画像合成の方法しか知らないのですが、 絵の範囲だけの画像を予め用意して、座標指定して合成する方法はどのようなロジックを書くのでしょうか?参考となるサイトのページを教えていただけるだけでもありがたいです。 色鮮やかな画像のファイル読み書きや圧縮/伸長に時間のかからないファイル形式は、どんなものがあるのでしょうか? すごく参考になるご回答だと感じていますので、もう少しアドバイスを下さい。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

まず「合成」ってなに?ならべる?重ねる? それと今のロジックを提示すべきでは? そもそも23個の画像を毎回動的に合成しなくてはいけない状況って どうなんでしょう?あらかじめいくつかを合成しておけないのでしょうか?

yanagihk
質問者

お礼

ご回答ありがとうございます。 合成は、同じサイズの23枚のPNG画像を重ねるという意味です。 ロジックは、合成処理部分ですが、質問欄の一番下にリンクを記述しました。 あらかじめいくつかを合成しておくというアドバイスですが、おっしゃる通りだと思います。 合成処理をする度に、23種類の中から変更したいパーツを決めて、23種類のパーツに対して決められた順番で合成(重ねる)するロジックです。 現状は、全身の合成処理だけあり、23種類の画像の合成結果が全身の画像として表示していましたが、顔の合成画面と全身の合成画面で二つに分割すればあらかじめ合成しておくことができるかもしれませんね。 処理が速くできるヒントがまだありましたら、ご教授下さいm(__)m

関連するQ&A