GIFのパレット変換
GIFは、グローバルカラーテーブルが存在するという前提ならば、簡単にパレット変換ができます。
/** * @brief GIF 画像のパレット変更を行います。 * * @param buf GIF 画像のデータが入ったバッファ * @param pal パレット画像のデータが入ったバッファ * (GIF のパレットデータの形式に準ずる) * * @return @a buf をコピーしてパレットデータを書き換えたバッファを返します。 */ private byte[] changePalette(byte[] buf, byte[] pal) { byte[] buf2; int palsize; buf2 = new byte[buf.length]; System.arraycopy(buf, 0, buf2, 0, buf.length); // Size of Global Color Table palsize = (1 << ((buf[10] & 0x07) + 1)) * 3; // copy palette System.arraycopy(pal, 0, buf2, 13, (palsize < pal.length) ? palsize : pal.length); return buf2; }
出来上がりヽ(´ー`)ノ