2017-04-23 13 views
0

256色のgifイメージをPythonの128色または64色のgifイメージに再作成することはできますか?.gifイメージの各ピクセルの色数を変更しますか?

私はそれが働いている、しかし、問題は、画像ファイルがまだ「彼の宇宙は」色の256の可能な値(0〜255)であると考えているということであるImageIOにライブラリに

import imageio 

def myfunction(inputgif, outputgif, duration): 
    gifimage = imageio.mimread(inputgif) 
    for i in range(len(gifimage)): 
    gifimage[i] = gifimage[i]/4 

    with imageio.get_writer(outputgif, mode='I', duration=duration) as writer: 
     for x in range(len(gifimage)): 
     writer.append_data(gifimage[x]) 
    writer.close() 

を使用して、それを試してみました0から64までではありません(すべての値を4で割ったので)。 64(4ビット)の色を使用するのではなく、画像が暗くなるだけです。

私の目標は、色数を減らして損失の多いデータ圧縮を得ることです。

+0

あなたは知っていますが、元気なアプローチでは、ベクトル量子化(保持された色を最適化するため)とカスタムカラーパレット(以前に計算された色のみを使用します)を使用しますか?これはあなたのコードとは非常に異なります!私はあなたがあなたのアプローチで期待していることを知らない(それは、ある空間では線形の色変換を行い、あなたの期待に応じてはるかに損失が少ない)。おそらく、これをやっているlibsはおそらく多くありますが、これをPythonですべて実装することはいくつかの仕事かもしれません。 – sascha

+0

@サシャーありがとうございます。私が使用できる図書館の例を教えてもらえますか? – Madno

+1

よく知られているものの1つ(オープンソースの世界では):[ImageMagick](http://www.imagemagick.org/Usage/quantize/)。 – sascha

答えて

0

GIFフォーマットは、8ビットのパレットエントリのみをサポートしています。

サポートが少なくても、節約額は7ビットで12.5%、6ビットで25%です。

+0

しかし、私は、256色のパレットを変更した場合、オリジナルよりも小さい.gif画像を生成することができます。 128または64,32 ..など?それが私の目標です。私はimageioライブラリに、その設定を行うための "palettesize = n"という小さなオプションを見つけました。 – Madno

+0

あなたは理解できません:GIFはそれをサポートしていません。 –

+0

私が知っているのは、 "最大8"をサポートしていますが、私は私の目で結果を見ることができます。 .gifイメージのパレットサイズを変更し、非常に小さい.gifイメージを取得しました。 – Madno

関連する問題