我正在编写一个带有一些简单图像处理的微服务。
当我将处理过的图像发送回用户时,我必须在通过缓冲区写入之前对其进行正确编码。
我可以很容易地检测到格式,所以这不是问题。目前我使用我的格式字符串并这样做:
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 是一种占用空间很小的整洁的语言,我很高兴。
人到中年有点甜
相关分类