2016-10-16 8 views
0

変更されたピクセルとその色を返そうとしています。次の関数は正常に動作しますが、私には255,255,255の値が必要です。それを必要な形式に変換することは可能ですか?RGBAをNRGBAに変換する

私はすでにここのドキュメントを見て - >https://golang.org/pkg/image/color/

私はまた、手動で別の変換を試みたが、私はそれを動作させることはできません。誰かがゴランでこれを変換する方法を知っていますか?

私が受け入れるよりも、必要な出力を得るための別のより良い、またはより速い方法がある場合。

注:私は新しいです。

+1

試した内容、出力内容、見たいと思われる内容の例を示してください。 – JimB

答えて

0

これはどういう意味ですか?私は他のリファクタをやったので、あなたのコードは不必要に複雑に見えました。

私はこれをテストしていません、画像をテストしませんでした。

// Pixels are pixels. 
type Pixel struct { 
    x, y int 
    color color.NRGBA 
} 

func diffImages(imgOne image.RGBA, imgTwo image.RGBA) []Pixel { 
    var pixels []Pixel 

    bounds := imgOne.Bounds() 

    for y := bounds.Min.Y; y < bounds.Max.Y; y++ { 
     for x := bounds.Min.X; x < bounds.Max.X; x++ { 

      if !reflect.DeepEqual(imgOne.Pix, imgTwo.Pix) { 

       rt, gt, bt, at := imgTwo.At(x, y).RGBA() 
       pixel := new(Pixel) 
       pixel.x = x 
       pixel.y = y 
       pixel.color.R = uint8(rt) 
       pixel.color.G = uint8(gt) 
       pixel.color.B = uint8(bt) 
       pixel.color.A = uint8(at) 
       pixels = append(pixels, *pixel) 
      } 
     } 
    } 
    return pixels 
} 
+0

ありがとうございます。私はPython、Ruby、PHPにしか慣れていないので、複雑かもしれません。問題は一部の人にとっては簡単に思えるかもしれません。お手伝いありがとう。 – Dany

+0

@Dany:アルファプレミンプル化された値を取っているため、アルファプレミックスされていない色に直接入れているので、これがうまくいかないかもしれません(アルファチャンネルを再乗算しますRGB値) – JimB

+0

@JimBそれは働いているようですが、私は今確信を持っていません。私はまだこのプロジェクトでコードを学習することに取り組んでいます。 RGBAをNRGBAに変換し、変更されたピクセルを取得する別の方法はありますか? – Dany

関連する問題