Go + Appengine Blobstore,调整图像上传的大小



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

还是有其他解决方案?

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

是的,可以从 blob 存储中提取文件,并利用 Go 1 附带的图像包,包括 image/draw 和 image/jpeg。有关概述和图像/绘图博客文章,请参阅 Go 映像包。假设你已拥有要操作的图像的 BlobInfo,则可以通过将嵌入的 BlobKey 传递给 Blobstore 来获取其原始数据。新读者,给你一个io。读取器对象。将其传递给例如.png。解码以获取图像。图像。执行您喜欢的任何操作,然后将其保存回 blobstore,请从 blobstore 获取编写器。创建并将其交给 jpeg。编码。最后调用 blobstore。关闭和 。用于获取要保存在数据存储中的新 Blob 密钥的密钥。

如果你想做更复杂的操作,有几个纯Go库,你可以与你的应用程序一起上传,并与图像一起使用。图像。例如,请参阅图形-go和"用Go编写的库"的图像和图形"部分。

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

算法本身就像Adam Thomason描述的那样。这个包只是隐藏了丑陋的部分并自动化了这个过程。

你可以像使用 blobstore 一样使用它。ParseUploads().它的作用是运行上传的 Blob 并优化图像,而不触及所有其他类型的 Blob。它还将返回从 blobstore 传递的所有其他值。ParseUploads().

最新更新