Go标准库中是否有一个函数可以将缓冲区编码为go中的任何图像格式

时间:2015-06-21 22:08:25

标签: go

我正在编写一个带有一些简单图像处理的微服务。

当我将操纵的图像发送回用户时,我必须在通过缓冲区写入之前正确编码。

我可以很容易地检测到格式,因此它不是一个问题。目前我使用我的格式字符串,并按照以下方式执行:

buffer := new(bytes.Buffer)

switch format { //format is just a string as returned by image.Decode()
case "jpeg":
    err := jpeg.Encode(buffer, img, nil) //img is just an image.Image 
    if err != nil {
        //Do some error handling
    }
case "png":
    err := png.Encode(buffer, img)
    if err != nil {
        //Do some error handling
    }
//and so on...

现在这个工作正常,当我开始认为我一定错过了这里的东西时,我正准备把它分成我自己的功能。没有像image.Encode(buffer, image, format)这样的函数似乎太明显了。

编写它并不是很麻烦,但如果我开始重新实现核心语言功能,我的代码将很快变得不必要地笨拙。

如果它不存在,因为go是一种很小的语言,占用空间很小,我很喜欢。

1 个答案:

答案 0 :(得分:2)

标准库不包含将图像编码为任意格式的功能。

库没有这种功能的一个原因是每种图像格式都有不同的编码选项。例如,JPEG optionsPNG options不同。