HTTP ベースの画像処理用の Go API
オンラインのスマート クロッピング、画像の反転または回転、画像のサムネイルの作成、画像のズーム、PNG、WEBP、TIFF、PDF、GIF、SVG への透かしの追加などをサポートするオープンソースの Go ライブラリ。
イマジナリーは、非常に強力なオープン ソースの HTTP ベースの画像処理 Go API であり、ソフトウェア開発者がプライベートまたはパブリック HTTP サービスを介して、より少ない依存関係で高度な画像操作を実行できるようにします。 API トークン認証、URL 署名保護、HTTP トラフィック スロットル戦略、Web クライアントの CORS サポートなどの高度な操作をサポートします。ライブラリは、HTTP POST ペイロード、サーバーのローカル パス、またはリモート HTTP サーバーから画像を読み取ることができます。
imaginary は、高速で効率的な画像処理を行う libvips の上に構築された強力で安定したライブラリです。このライブラリには、JPEG、PNG、HEIF、WEBP、TIFF、PDF、GIF、SVG 形式などの画像形式のサポートと、それらの透過的な変換が含まれています。 Docker と Fly.io を完全にサポートしています。 Fly の優れた点は、ユーザーの場所の近くでトラフィックを処理することにより、レイテンシを短縮し、より良いプラクティスを提供できることです。
仮想ライブラリは、画像のサイズ変更、画像の拡大、画像の切り抜き、スマート切り抜き、画像の回転、さらに画像を変換する AutoRotate、EXIF メタデータに基づく自動反転、画像の作成、変換、および操作に関連するいくつかの重要な機能を完全にサポートしています。フロップ、画像のズーム、画像のサムネイルの作成、画像の適合、画像の埋め込みまたは拡張、透かし画像の追加、画像へのぼかし効果の追加など。
虚数を始める
imaginary をインストールする最も簡単で推奨される方法は、GitHub を使用することです。
GitHub 経由で仮想をインストールする
go get -u github.com/h2non/imaginary
Go 経由で画像を他の形式に変換する
オープンソース API の仮想ライブラリには、画像を他のサポートされているファイル形式に簡単に変換するためのサポートが含まれています。 JPEG、PNG、WEBP 形式などの非常に便利な形式で画像を保存できます。ライブラリは、追加の品質と圧縮設定で変換サポートを提供しています。正しいイメージ名、アドレス、変換形式を指定するだけで、ライブラリが Go コマンドをいくつか実行するだけで簡単に変換してくれます。
Imaginary Libraryで画像を変換する
func Convert(buf []byte, o ImageOptions) (Image, error) {
if o.Type == "" {
return Image{}, NewError("Missing required param: type", http.StatusBadRequest)
}
if ImageType(o.Type) == bimg.UNKNOWN {
return Image{}, NewError("Invalid image type: "+o.Type, http.StatusBadRequest)
}
opts := BimgOptions(o)
return Process(buf, opts)
}
Go によるオンライン画像トリミング
オープンソースの架空のライブラリを使用すると、ソフトウェア開発者は、独自のアプリケーション内に数行の Go コードを追加するだけで、オンラインで画像を切り抜くことができます。カスタムの幅または高さを指定して、画像をトリミングできます。ライブラリは、画像の比率を維持することで、作業を容易にします。このライブラリは、libvips 組み込みのスマート トリミング アルゴリズムを使用した画像のトリミングもサポートしています。また、PNG 画像の画像圧縮レベルを定義し、画像を簡単にフリップ、フロップ、および回転することもできます。
Go Libraryで画像ドロップ
{
"operation": "crop",
"params": {
"width": 500,
"height": 300
}
画像に合わせてサイズ変更
Free imaginary ライブラリには、アプリ内で Go コマンドを使用して収まるように画像のサイズを変更するためのサポートが含まれています。トリミングせずに、幅と高さに収まるように画像のサイズを簡単に変更できます。ライブラリは、画像の縦横比を維持することで、作業を容易にします。幅と高さは、画像の最大バウンディング ボックスを指定します。
Free Go Libraryで画像のサイズを変更
func Resize(buf []byte, o ImageOptions) (Image, error) {
if o.Width == 0 && o.Height == 0 {
return Image{}, NewError("Missing required param: height or width", http.StatusBadRequest)
}
opts := BimgOptions(o)
opts.Embed = true
if o.IsDefinedField.NoCrop {
opts.Crop = !o.NoCrop
}
return Process(buf, opts)
}
画像の回転と自動回転
Free imaginary ライブラリには、画像を簡単に回転させる機能が用意されています。また、Go アプリケーション内で画像を自動回転するための非常に便利な機能も含まれています。 EXIF 方向メタデータに基づいて、それ以上の画像変換なしで自動的に画像を回転させます。 AutoRotate メソッドは、入力画像と同じサイズと形式の新しい画像を生成します。
Auto-Rotate 無料のGoライブラリによる画像
func AutoRotate(buf []byte, o ImageOptions) (out Image, err error) {
defer func() {
if r := recover(); r != nil {
switch value := r.(type) {
case error:
err = value
case string:
err = errors.New(value)
default:
err = errors.New("libvips internal error")
}
out = Image{}
}
}