pngファイルがJavaのメモリ上でどのように表現されるかを低レベルで掘り下げて、ピクセルを反復処理したり、ピクセルを変更したり、既存のピクセルを使用して変更されたpngファイルを作成したりしたいと思います。
どこから始めればいいですか?
BufferedImage
あなたはそれをで読むことから始めることができますImageIO.read(file)
。
これらのgetRGB(...)
メソッドは、個々のピクセルに関する情報を取得するのに役立ち、対応するsetRGB(...)
メソッドは、それらを変更するのに役立ちます。
Javaでのメモリ内の画像の表現は、ファイルの形式とは本質的に無関係です。PNG、JPEG、GIFなど、画像を(言語に依存しない)バイトストリームとしてエンコードするための標準です。しかし、メモリ内の画像のピクセルを操作しているときは、すでにそれをデコードしているので、どの形式(PNG、JPEG ...)からのものであるかを「忘れて」しまいます。
Javaで画像を操作する最も一般的な方法は 、 java.awt.imageに含まれているBufferedImageクラスを使用することです。* パッケージ。しかし、それは必須ではありません。たとえば、私はBufferedImageを使用せず、代わりに各画像行を配列として提供する低レベルのPNGコーダー/エンコーダー( PNGJ )に取り組んできました。int[]