2017-09-20 16 views
0

マスク画像の上に描画し、テンプレート画像は、私がイメージして、赤、緑、青、黄の色を色付けしたいGoは、私は、テンプレートを使用して画像の上に描画しようとしています

enter image description here次カスタムカラーと、このような何かを達成:

enter image description here

私は現在、ベースとしてこの画像を使用し、これを達成するために

enter image description here

そしてこれは、しかし、(期待される結果に近いもの)非常に奇妙な結果を与えないdraw.Draw(outfitImage, outfitImage.Bounds(), generatorImage, image.ZP, draw.Over)

を使用してテンプレートを上に描画が、これは私がピクセル

func paintPixels(img *image.NRGBA, base color.Color, dst color.Color) { 
    br, bg, bb, ba := base.RGBA() 
    dr, dg, db, _ := dst.RGBA() 
    for x := 0; x < img.Bounds().Dx(); x++ { 
     for y := 0; y < img.Bounds().Dy(); y++ { 
      r, g, b, a := img.At(x, y).RGBA() 
      if br == r && bg == g && bb == b && ba == a { 
       img.Set(x, y, color.RGBA{uint8(dr), uint8(dg), uint8(db), 255}) 
      } 
     } 
    } 
} 

enter image description here

を交換する方法であります

画像テンプレートをカラー化するときに使用するアルファ値によって結果が異なる場合があります。だから私は期待された結果を達成する方法を考えることができません、私はdraw.DrawMaskとマスクを使用する必要がありますが、私はどこで始めるか、または私が探している結果を達成するためのヒントを持っていないと思います

答えて

1

あなたはあなたのようですすべてのコンポーネントが一致する場合は、ピクセルを色で置き換えます。あなたはbild/blendにおける合成方法を見れば、あなたは画像を合成するために、あなたに合ったものを見つける必要があります - あなたは、おそらく不透明度や乗算モードをしたいと、このファイルからコードを抽出できます。

https://github.com/anthonynsimon/bild/blob/master/blend/blend.go

関連する問題