ホームページ  >  記事  >  バックエンド開発  >  2 ビットの色深度でパレット化された PNG を開くことができる Go 用のライブラリはありますか?

2 ビットの色深度でパレット化された PNG を開くことができる Go 用のライブラリはありますか?

PHPz
PHPz転載
2024-02-09 23:30:21333ブラウズ

Go 是否有可以打开 2 位颜色深度的调色板 png 的库?

php Editor Xigua Go は強力なプログラミング言語ですが、2 ビット色深度のパレット PNG を開くことができるライブラリはありますか?答えは「はい」です。 Go 言語には、画像を操作するためのライブラリとツールが多数あり、その一部は特定の深さでパレット化された PNG 画像を開いて処理できます。これらのライブラリを使用すると、2 ビットの色深度でパレット化された PNG イメージを簡単に読み取り、編集でき、アプリケーションに機能と柔軟性が追加されます。初心者でも経験豊富な Go 開発者でも、これらのライブラリは、より優れた画像処理および編集機能を提供して目標を達成するのに役立ちます。

質問内容

goを使ってパレットベースのpng画像を読み込むにはどうすればよいですか?

Python の画像の場合は、次のようにするだけです:

リーリー

go を使用:

リーリー

デコード時に「png: 無効な形式: png ファイルではありません」がスローされます。

Mac シェルで file コマンドを使用すると、次のように表示されます:

リーリー

vscode は画像を非常にうまくレンダリングします。

Adobe Illustrator で作成した画像と次のコードで生成した画像の両方でこれを試しました。どちらでも同じエラーが発生します:

from pil import image

im = image.open('image.png')
pix = im.load()
for i in range(100):
    for j in range(100):
        print(pix[i, j])

解決策

あなたの場合、それは画像の形式ではなく、画像ファイルの使用方法にあるようです。

最初に image.DecodeConfig() に渡していると思います (コードには表示されていませんが、cfg は初期化されているはずです)、次に に渡します。 image.Decode()

問題は、最初の呼び出しの後、ファイルにはオフセットがあるのに、2 番目の呼び出しではファイルの先頭から読み取っていると想定されていることです。

この問題は、構成を読み取った後にファイルをロールバックすることで解決できます:

File.Seek(0, io.SeekStart)

以上が2 ビットの色深度でパレット化された PNG を開くことができる Go 用のライブラリはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。