ここで質問です: 透明な 200x200 の png 画像があり、x,y (50,50) で始まり、幅 50px、高さ 20px の形状があるとします。
PHP (gdlib または imagemagick) を使用して、画像サイズに対する形状の位置を取得する方法はありますか? 与えられた例では、スクリプトは (x1=50, y1=70, x2=100, y2=70) を返します。
ここで質問です: 透明な 200x200 の png 画像があり、x,y (50,50) で始まり、幅 50px、高さ 20px の形状があるとします。
PHP (gdlib または imagemagick) を使用して、画像サイズに対する形状の位置を取得する方法はありますか? 与えられた例では、スクリプトは (x1=50, y1=70, x2=100, y2=70) を返します。
「で始まる形」とはどういう意味ですか?たとえば、楕円の場合、楕円全体をカバーする長方形の左上隅を見つけたいですか?
はいの場合、画像のすべてgetpixelのピクセルを上から下にループして、透明ではない最上部と最下部のポイントを検索できます(見つかったときにループを終了します)。それはあなたのy1とy2ポイントになります。次に、同じことをy1〜y2の範囲内で左から右にループして、x1とx2を見つけます。
これはおそらくあまり最適化されていないため、より良いアルゴリズムを想像することをお勧めします。たとえば、画像が300×200ピクセルの場合、次の方法で最上位のポイントを検索できます。
ちなみに、25行目をスキャンしたときに、座標x = 74、y=50に不透明な点が見つかったとします。これで、同じ方法で左端のポイントを検索する場合、x = 150(幅/ 2)から開始する代わりに、37(74/2)から開始できます。これは、x=74にオブジェクトがあることがすでにわかっているためです。