私はGIF画像に関連するプロジェクトに取り組んでいます.Goでいくつかの基本的な操作を行っています(フレームの取得や画像からGIFを作成するなど)。しかし、今はGIFをデコードしてからもう一度エンコードしようとしている簡単な例を考えてみましょう。私は"image/gif"
パッケージを使用しようとしましたが、私はそれが私が欲しいことをすることができません。ここ
はコードです:GIFのエンコーディング/デコード
package main
import (
"os"
"image/gif"
)
func main() {
inputFile , err := os.Open("travolta.gif")
defer inputFile.Close()
if err != nil {
panic(err)
}
g, err := gif.DecodeAll(inputFile)
if err != nil {
panic(err)
}
outputFile, err := os.OpenFile("travolta2.gif", os.O_WRONLY|os.O_CREATE, 0777)
defer outputFile.Close()
if err != nil {
panic(err)
}
err = gif.EncodeAll(outputFile, g)
if err != nil {
panic(err)
}
}
私はそれがパニックにしないと、別のGIFが実際に作成されたコードを実行すると。残念ながら、それは壊れています。さらに、gifのサイズは3,4MBから4,4MBに変更されています。 GIFを保存/読み込む方法ではありませんか?どのような間違いをするのですか?
EDIT:破損したことで 私はここにscrenshot occurs-それにエラーを開こうとすることを意味:http://www.filedropper.com/obrazekpociety。
GIF: http://vader.joemonster.org/upload/rwu/1539970c1d48acceLw7m.gif
囲碁バージョン1.7.4
あなたが「壊れた」とはどういう意味ですか?どのGoのバージョンを使用していますか?動作しないファイルのサンプルを提供できますか? – JimB
私は質問を編集しました –
これはあなたが使用している_exact_コードと画像であることは確かですか?あなたが提供した画像は、3.4ではなく9.2MBです。これはgo1.7とgo1.8で正しく動作するはずです。 (サイドノート、常にCloseを延期する前にエラーをチェックするか、パニックを得ることができます) – JimB