Golang で JPEG 画像の単一ピクセルの色を変更する
JPEG 画像内のピクセルの色を変更しようとすると課題が発生しますGoを使って。これを実現するには、ピクセルを変更できる方法で画像を操作する必要があります。
通常、image.Decode() 関数は、読み取りを表す image.Image 型の値を返します。 -画像のみの表示。ただし、通常は Set() メソッドを通じてピクセルの色を変更する機能を提供するさまざまな image.Image 実装があります。
オプション 1: 変更可能なタイプの確認
1 つのアプローチは、画像がピクセルの変更をサポートしているかどうかを確認することです。存在する場合は、イメージを型アサートし、その Set() メソッドを呼び出してそのイメージに描画できます。
if cimg, ok := img.(Changeable); ok { cimg.Set(0, 0, color.RGBA{85, 165, 34, 255}) cimg.Set(1, 0, ...) }
オプション 2: カスタム イメージ タイプの実装
画像がピクセルの変更をサポートしていない場合は、image.Image インターフェイスを実装するカスタム タイプを実装できます。ピクセル カラーを返す At() メソッドでは、変更されていない領域については元のピクセル カラーを返しながら、特定の座標に対して変更されたカラーを指定できます。
type MyImg struct { image.Image } func (m *MyImg) At(x, y int) color.Color { switch { case x == 0 && y == 0: return color.RGBA{85, 165, 34, 255} } return m.Image.At(x, y) }
オプション 3: 新しい変更可能オブジェクトの作成画像
複数のピクセルを変更する必要がある場合は、新しい変更可能な画像を作成し、その上に元の画像を描画してから、望ましい変化。この目的には、image/draw パッケージを使用できます。
cimg := image.NewRGBA(img.Bounds()) draw.Draw(cimg, img.Bounds(), img, image.Point{}, draw.Over) cimg.Set(0, 0, color.RGBA{85, 165, 34, 255})
以上がGo を使用して JPEG 内の単一ピクセルの色を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。