1

最初のピクセルのx座標と、アルファセット1のy座標を見つける必要があります。透明な画像があり、その上に黒い境界線の長方形があります。次に、長方形の上部と左側を見つける必要があります。

たとえば、画像を確認します。 透明な外側の長方形

だから私は、どういうわけか私が画像の最初の不透明な点を取得できれば、その座標を取得してそれについて知ることができると思いました。

phpでImagickを使用して実行できますか?pixelIteratorについて読みましたが、これを行うにはどうすればよいですか?何か提案や考えはありますか?

4

2 に答える 2

1

3年後、ちょっとしたきっかけとして、コマンドラインからImageMagickを使ってこれにアプローチする方法についていくつか考えてみます...

まず、 を使用して透明度チャネルを抽出できますが、-alpha extract <filename>実際にはファイルが必要ないので、別のconvertコマンドにパイプして、アルファが 1 でないすべてのものをしきい値処理することができます (16 ビットの量子化、つまり 65535 を想定しています)。 =1) 次に、ImageMagick を使用して、その画像を最小の境界ボックスにトリミングする方法を尋ねます。-format %@ -write info:

convert rectangle.png -alpha extract png:- | convert - -threshold 65534 -format %@ -write info: alpha.png

出力

91x118+80+81

これは、しきい値化された透明度のバウンディング ボックスが幅 91 ピクセル、高さ 118 ピクセルであり、左上隅から 80 ピクセルの位置から始まること、そして最も重要なことに、上から 81 ピクセル下から始まることを示しています。y 座標は 81 であることがわかりました。 .

探しているピクセルを見つけるために実際には必要ありませんが、私が何をしているかを示すのに役立ちます。

convert rectangle.png -stroke red -fill none -draw "rectangle 80,81 170,198" fyi.png

ここに画像の説明を入力

これで、画像から 81 番目の行だけを切り取って、最初の白いピクセルを探し、grep見つかったらすぐに終了できます。

convert alpha.png -crop x1+0+81 txt: | grep -m1 "#FFFFFF"

出力

147,0: (65535,65535,65535)  #FFFFFF  gray(255)

つまり、最初の白いピクセルの幅は 147 であることがわかり、x 座標もわかります。したがって、求めるピクセルは 147,81 です。

于 2015-11-25T11:05:02.003 に答える
1

すべてのピクセルをループして、Imagick::getImagePixelColor(x,y)関数を使用して色を読み取ることができます。

于 2012-11-19T09:02:25.597 に答える