Image Golang io。读卡器出现jpeg问题。解码返回EOF

Image Golang io。读卡器出现jpeg问题。解码返回EOF,image,go,jpeg,Image,Go,Jpeg,我正在尝试使用github.com/departition/imaging的库将一个作为io.Reader的multipart.File解码为jpeg格式,以转换为缩略图。我事先知道数据是jpeg格式的。当我将multipart.File发送到ConvertImageToHumbnail函数时,它每次都返回意外的EOF。我做错了什么 package images import ( "github.com/disintegration/imaging" "image" "

我正在尝试使用github.com/departition/imaging的库将一个作为io.Reader的multipart.File解码为jpeg格式,以转换为缩略图。我事先知道数据是jpeg格式的。当我将multipart.File发送到ConvertImageToHumbnail函数时,它每次都返回意外的EOF。我做错了什么

package images

import (
    "github.com/disintegration/imaging"
    "image"
    "image/jpeg"
    "mime/multipart"
)

func ConvertImageToThumbnail(pic multipart.File) (image.Image, error) {
    pic.Seek(0,0) // The solution was to seek back to the beginning of the file
    img,err := jpeg.Decode(pic)
    if err != nil {
        return nil, err
    }
    thumb := imaging.Thumbnail(img, 100, 100, imaging.CatmullRom)

    return thumb, nil
}


pic, header, err := r.FormFile("avatar") 
// check error
defer pic.Close()

图。解码前的Seek(0,0)修复了该问题

如果要传递给解码器的文件有问题,您需要向我们展示如何生成该文件。为什么不保存到文件并进行检查?正确的图像是否为jpeg格式?是否确定在将图像转换为缩略图之前未调用(
defer pic.Close()
)?请发布更多的代码。请不要把代码放在评论中,它很难阅读,属于问题。此外,这不会显示您是如何创建文件的,也不会显示它是否实际上是jpeg图像。您需要调试发送和接收的内容,而不是如何解码图像。我会首先通过将img写入文件或仅通过fmt.Println(img.Pix)(不要忘记导入“fmt”)检查img是否有效,如果图像不是太大。