1

Go + Appengine について頭を悩ませようとしています。私は Blobstore を使用して、ユーザーの画像アップロードを保存しています。BlobStore から画像をダウンロードして操作できる方法はありますか?

それとも別の解決策がありますか?

画像ライブラリは少し制限されています。また、他の形式を jpeg に変換したいと考えています。

4

2 に答える 2

7

はい、blobstore からファイルを取得して、Go 1 に含まれているイメージ パッケージ ( image/drawimage/jpegなど) を利用できます。概要とimage/draw ブログ投稿については、 The Go image packageを参照してください。操作したい画像のBlobInfoが既にあると仮定すると、埋め込まれた BlobKey をblobstore.NewReaderに渡して io.Reader オブジェクトを与えることで生データを取得できます。それをたとえばpng.Decodeに渡してimage.Imageを取得します。好きな操作を行ってから、それを blobstore に保存し、blobstore.Create から Writer を取得してjpeg.Encodeに渡します。. 最後に blobstore.Close と .Key を呼び出して、データストアに保存する新しい BlobKey を取得します。

さらに複雑な操作を行いたい場合は、アプリでアップロードして image.Image で使用できる pure-Go ライブラリがいくつかあります。たとえば、graphics-goおよびLibraries Written in Goの「Images and Graphics」セクションを参照してください。

于 2012-09-29T01:08:02.903 に答える
0

ブロブストアの画像を最適化する魔法を自動的に実行するパッケージが欲しかったのです。結果はGitHubで見つけることができます:https ://github.com/TomiHiltunen/GAE-Go-image-optimizer

アルゴリズム自体は、AdamThomasonが説明したものとほとんど同じです。このパッケージは、醜い部分を隠し、プロセスを自動化します。

blobstore.ParseUploads()を使用するのと同じように使用できます。アップロードされたBLOBを実行し、画像を最適化して、他のすべてのタイプのBLOBをそのままにします。また、blobstore.ParseUploads()から渡された他のすべての値も返します。

于 2013-03-15T17:05:03.127 に答える