1

我正在尝试了解 Go + Appengine。我一直在使用 Blobstore 来存储用户上传的图片。无论如何我可以从 BlobStore 下载图像并对其进行操作吗?

还是有其他解决方案?

图像库有点受限。我还想将其他格式转换为 jpeg。

4

2 回答 2

7

是的,您可以从 blobstore 中提取文件并利用 Go 1 中包含的图像包,包括image/drawimage/jpeg。有关概述和图像/绘图博客文章,请参阅Go 图像包。假设您已经拥有要操作的图像的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的“图像和图形”部分。

于 2012-09-29T01:08:02.903 回答
0

我想要一个包,它会自动执行优化 blobstore 图像的魔力。结果可以在 GitHub 上找到:https ://github.com/TomiHiltunen/GAE-Go-image-optimizer

该算法本身与 Adam Thomason 所描述的非常相似。这个包只是隐藏了丑陋的部分并自动化了这个过程。

您可以像使用 blobstore.ParseUploads() 一样使用它。它的作用是遍历上传的 blob 并优化图像,使所有其他类型的 blob 保持不变。它还将返回从 blobstore.ParseUploads() 传递的所有其他值。

于 2013-03-15T17:05:03.127 回答