Small Go軟件包,用於通過C綁定使用libvips進行快速的高級圖像處理,提供了簡單,優雅且流暢的編程API。
bimg被設計為一個小型高效的庫,支持一組常見的圖像操作,例如裁剪,調整大小,旋轉,縮放或水印。如果libvips@8.3+
使用正確的庫綁定進行編譯,它可以本地讀取JPEG,PNG,WEBP,還可以讀取TIFF,PDF,GIF和SVG格式。
bimg能夠將圖像輸出為JPEG,PNG和WEBP格式,包括它們之間的透明轉換。
bimg在內部使用libvips,這是一個用C語言編寫的功能強大的庫,用於圖像處理,它占用的內存很少,通常比使用最快的ImageMagick和GraphicsMagick設置或Go native image
包快4倍,並且在某些情況下甚至比處理JPEG圖像快8倍。
如果您正在尋找基於HTTP的圖像處理解決方案,請參見imaginary。
bimg受到Sharp的大力啟發,Sharp的同源軟件包是為node.js構建的。bimg用於生產環境中,每天處理數千張圖像。
v1通知:bimg
引入了一些較小的重大更改v1
。如果您使用gopkg.in
,則仍然可以依賴而v0
不用擔心API的重大更改。
內容
支持的圖像操作
- 調整大小
- 放大
- 作物(包括智能作物支持,libvips 8.5+)
- 旋轉(基於EXIF方向自動旋轉)
- 翻轉(具有基於EXIF元數據的自動翻轉)
- 翻牌圈
- 放大
- 縮圖
- 提取面積
- 水印(使用文本或圖像)
- 高斯模糊效果
- 自定義輸出顏色空間(RGB,灰度...)
- 格式轉換(具有其他質量/壓縮設置)
- EXIF元數據(大小,Alpha通道,配置文件,方向...)
- 修剪(libvips 8.6+)
先決條件
- libvips 7.42+或8+(建議8.4+)
- 與C兼容的編譯器,例如gcc 4.6+或clang 3.0+
- 繼續1.3+
注意:libvips
GIF,PDF和SVG支持需要v8.3 +。
下載
go get -u gopkg.in/h2non/bimg.v1\
調整大小
buffer, err := bimg.Read("image.jpg") if err != nil { fmt.Fprintln(os.Stderr, err) } newImage, err := bimg.NewImage(buffer).Resize(800, 600) if err != nil { fmt.Fprintln(os.Stderr, err) } size, err := bimg.NewImage(newImage).Size() if size.Width == 800 && size.Height == 600 { fmt.Println("The image size is valid") } bimg.Write("new.jpg", newImage)
旋轉
buffer, err := bimg.Read("image.jpg") if err != nil { fmt.Fprintln(os.Stderr, err) } newImage, err := bimg.NewImage(buffer).Rotate(90) if err != nil { fmt.Fprintln(os.Stderr, err) } bimg.Write("new.jpg", newImage)
水印
buffer, err := bimg.Read("image.jpg") if err != nil { fmt.Fprintln(os.Stderr, err) } watermark := bimg.Watermark{ Text: "Chuck Norris (c) 2315", Opacity: 0.25, Width: 200, DPI: 100, Margin: 150, Font: "sans bold 12", Background: bimg.Color{255, 255, 255}, } newImage, err := bimg.NewImage(buffer).Watermark(watermark) if err != nil { fmt.Fprintln(os.Stderr, err) } bimg.Write("new.jpg", newImage)
詳細方法
https://www.ctolib.com/bimg.html#articleHeader10