ホームページ > バックエンド開発 > Golang > Go を使用して JPEG 内の単一ピクセルの色を変更するにはどうすればよいですか?

Go を使用して JPEG 内の単一ピクセルの色を変更するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-12 12:30:25
オリジナル
543 人が閲覧しました

How Can I Change the Color of a Single Pixel in a JPEG Using Go?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート