亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

去圖片上傳

去圖片上傳

Go
開滿天機 2022-01-17 10:04:48
我目前正在將圖像上傳到我的服務器,執行以下操作:func (base *GuildController) GuildLogo(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {    ...    logo, _, err := req.FormFile("logo")    defer logo.Close()    logoGif, format, err := image.Decode(logo)    if err != nil {        base.Error = "Error while decoding your guild logo"        return    }    logoImage, err := os.Create(pigo.Config.String("template")+"/public/guilds/"+ps.ByName("name")+".gif")    if err != nil {        base.Error = "Error while trying to open guild logo image"        return    }    defer logoImage.Close()    //resizedLogo := resize.Resize(64, 64, logoGif, resize.Lanczos3)    err = gif.Encode(logoImage, logoGif, &gif.Options{        256,        nil,        nil,    })    if err != nil {        base.Error = "Error while encoding your guild logo"        return    }    ...}所以一切都很好。但是 gif 會丟失動畫。例如,這是我要上傳的 gif這是得救的不知道我做錯了什么
查看完整描述

1 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

正如評論中所暗示的,您只使用一幀:


func Decode(r io.Reader) (image.Image, error)Decode 從 r 讀取 GIF 圖像并將第一個嵌入圖像作為 image.Image 返回。


但是你需要


func DecodeAll(r io.Reader) (*GIF, error) DecodeAll 從 r 讀取 GIF 圖像并返回順序幀和時序信息。



func EncodeAll(w io.Writer, g *GIF) error EncodeAll 將 g 中的圖像以 GIF 格式寫入 w,并具有給定的循環計數和幀之間的延遲。


詳情請看這篇文章。


這是一個將圖像減慢到每幀 0.5 秒的示例:


package main


import (

    "image/gif"

    "os"

)


func main() {

    logo, err := os.Open("yay.gif")

    if err != nil {

        panic(err)

    }

    defer logo.Close()


    inGif, err := gif.DecodeAll(logo)

    if err != nil {

        panic(err)

    }


    outGif, err := os.Create("done.gif")

    if err != nil {

        panic(err)

    }

    defer outGif.Close()


    for i := range inGif.Delay {

        inGif.Delay[i] = 50

    }

    if err := gif.EncodeAll(outGif, inGif); err != nil {

        panic(err)

    }

}

結果:

http://img1.sycdn.imooc.com//61e4cf160001e4da02450169.jpg

http://img1.sycdn.imooc.com//61e4cf160001fb2b02450169.jpg

邊注

即使在我的瀏覽器(Firefox)中我看到輸出圖像動畫,并且我可以看到 GIMP 中的幀,我也無法在我的桌面查看器(gifview、comix)上看到它動畫。我不知道(尚)這是什么原因。


查看完整回答
反對 回復 2022-01-17
  • 1 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號