我正在努力了解 Go + Appengine。我一直在使用 Blobstore 来存储用户上传的图片。无论如何,我可以从 BlobStore 下载图像并对其进行操作吗?
或者有其他解决方案吗?
image lib有点受限。我还想将其他格式转换为 jpeg。
最佳答案
是的,您可以从 blobstore 中提取文件并利用 Go 1 附带的图像包,包括 image/draw和 image/jpeg .参见 The Go image package概览和 image/draw blog post .假设您已经拥有 BlobInfo对于要操作的图像,可以通过将嵌入的 BlobKey 传递给 blobstore.NewReader 来获取其原始数据。 ,给你一个 io.Reader 对象。将其传递给例如png.Decode得到一个image.Image .做任何你喜欢的操作,然后将它保存回 blobstore,从 blobstore.Create 获取一个 Writer交给jpeg.Encode .最后调用 blobstore.Close 和 .Key 获取新的 BlobKey 以保存在数据存储中。
如果您想进行更复杂的操作,可以使用几个纯 Go 库,您可以将它们与您的应用一起上传并与 image.Image 一起使用。参见例如 graphics-go和 Libraries Written in Go 的“图像和图形”部分.
关于image - Go + Appengine Blobstore,调整图片上传大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12647194/