画像の作成と操作のためのオープンソース Go ライブラリ
JPEG、PNG、GIF、TIFF、および BMP 画像のサイズ変更、トリミング、回転をサポートする強力な Go API 。画像の明るさ、コントラスト、ガンマ補正を調整することもできます。
オープン ソースの Go Imaging API は、画像の作成と操作に関連する完全な機能を提供する非常に強力なパッケージです。このライブラリは非常に柔軟で、開発者は新しいイメージを簡単に作成し、数行のコードで既存のイメージを変更できます。
Imaging は、サイズが小さく機能が効率的な純粋な Go ライブラリです。 JPEG、PNG、GIF、TIFF、BMP など、いくつかの重要な画像ファイル形式のサポートが含まれています。ライブラリには、画像のサイズを変更するためのいくつかのリサンプリング フィルターも含まれています。重要なフィルターには、NearestNeighbor、Lanczos、CatmullRom、MitchellNetravali、Linear、Box などがあります。このライブラリにより、開発者はカスタム フィルターを簡単に作成することもできます。
無料の Imaging ライブラリには、画像のサイズ変更、画像の回転、画像のトリミング、画像の明るさの調整、画像のコントラストの調整、画像のガンマ補正、画像の彩度の変更、画像の複製、画像の複製など、画像処理に関連するいくつかの重要な機能が含まれています。画像のぼかし、エンコードとデコード、画像のオーバーレイ、シャープネスの追加、サムネイルの作成、その他多くの機能。
イメージング入門
Imaging をインストールする最も簡単で推奨される方法は、GitHub 経由です。
GitHub 経由で Imaging をインストールする
go get -u github.com/disintegration/imaging
Go API を介して新しい画像を生成する
オープン ソースのイメージング ライブラリには、Go コマンドを使用して独自のアプリケーション内で新しいイメージを生成するためのサポートが含まれています。新しい画像の作成には、画像の幅、高さ、画像の背景色、および画像の出力形式が必要です。作成した画像を簡単に変更して、反転、不透明度の設定、ブレンド、ぼかしなどのさまざまな操作を実行することもできます。
Go API を介して新しい画像を生成する
func New(width, height int, fillColor color.Color) *image.NRGBA {
if width <= 0 || height <= 0 {
return &image.NRGBA{}
}
c := color.NRGBAModel.Convert(fillColor).(color.NRGBA)
if (c == color.NRGBA{0, 0, 0, 0}) {
return image.NewNRGBA(image.Rect(0, 0, width, height))
}
return &image.NRGBA{
Pix: bytes.Repeat([]byte{c.R, c.G, c.B, c.A}, width*height),
Stride: 4 * width,
Rect: image.Rect(0, 0, width, height),
}
}
Go による他の形式への画像変換
ソフトウェア開発者は、無料の画像ライブラリを使用して、独自の GO アプリ内で画像をサポートされている他のファイル形式に簡単に変換できます。イメージ名と出力イメージ形式を指定するだけです。保存機能を使用すると、PNG、BMP、GIF、JPEG、TIFF など、サポートされている他のいくつかの画像ファイル形式に画像を簡単にエクスポートできます。
画像のサイズ変更とトリミング
無料の画像処理 API には、Go コマンドを使用して必要に応じて画像のサイズを変更する機能が含まれています。まず、画像を開き、画像の高さと幅を指定してサイズを変更する必要があります。別のオプションは、縦横比を維持して幅を指定するだけで画像のサイズを変更できることです。このライブラリでは、カスタムの幅、高さを提供し、センター アンカーを使用して、元の画像をトリミングすることもできます。
囲碁APIによるクロップ&リサイズ画像
func cropAndResize(img image.Image, width, height int, anchor Anchor, filter ResampleFilter) *image.NRGBA {
dstW, dstH := width, height
srcBounds := img.Bounds()
srcW := srcBounds.Dx()
srcH := srcBounds.Dy()
srcAspectRatio := float64(srcW) / float64(srcH)
dstAspectRatio := float64(dstW) / float64(dstH)
var tmp *image.NRGBA
if srcAspectRatio < dstAspectRatio {
cropH := float64(srcW) * float64(dstH) / float64(dstW)
tmp = CropAnchor(img, srcW, int(math.Max(1, cropH)+0.5), anchor)
} else {
cropW := float64(srcH) * float64(dstW) / float64(dstH)
tmp = CropAnchor(img, int(math.Max(1, cropW)+0.5), srcH, anchor)
}
return Resize(tmp, dstW, dstH, filter)
}
画像の反転、回転、ぼかし、複製
Imaging ライブラリには、画像の反転、画像の回転、ぼかし、複製など、画像操作のための重要な機能がいくつか含まれています。既存のイメージのコピーを作成するには、Clone 関数を呼び出して既存のイメージを提供するだけです。このライブラリは、わずか数行のコードで画像の回転と反転もサポートしています。反時計回りに指定された角度で画像を簡単に回転できます。 angle パラメータは、度単位の回転角度です。
Go APIで画像をクローンする
func Clone(img image.Image) *image.NRGBA {
src := newScanner(img)
dst := image.NewNRGBA(image.Rect(0, 0, src.w, src.h))
size := src.w * 4
parallel(0, src.h, func(ys <-chan int) {
for y := range ys {
i := y * dst.Stride
src.scan(0, y, src.w, y+1, dst.Pix[i:i+size])
}
})
return dst
}