Thư viện Go Xử lý Hình ảnh Cấp cao Nguồn mở
Go API cho phép xoay hình ảnh, điều chỉnh hình ảnh, tạo hình thu nhỏ hình ảnh, thu phóng hình ảnh, nhúng hoặc mở rộng hình ảnh, thêm hiệu ứng làm mờ cho hình ảnh và hơn thế nữa.
bimg là một thư viện Go xử lý hình ảnh cấp cao mã nguồn mở cung cấp khả năng đọc và xử lý hình ảnh chỉ với một vài dòng mã Go. Thư viện có quy mô nhỏ hơn nhưng tạo ra kết quả rất có tổ chức và hiệu quả. Thư viện rất nhanh so với các thư viện có sẵn khác yêu cầu bộ nhớ rất nhỏ để hoàn thành tác vụ.
Bimg là thư viện C cấp cao được xây dựng trên libvips, đây là một thư viện rất mạnh để xử lý hình ảnh. Nó cung cấp hỗ trợ đọc một số định dạng tệp hình ảnh rất phổ biến như JPEG, PNG, WEBP, TIFF, PDF, GIF, SVG, ... Bạn cũng có thể dễ dàng xuất hình ảnh sang các định dạng JPEG, PNG, WEBP cũng như các hình ảnh trong suốt.
Thư viện bimg đã bao gồm hỗ trợ cho một số tính năng xử lý hình ảnh quan trọng như thay đổi kích thước hình ảnh, phóng to hình ảnh, cắt hình ảnh bao gồm hỗ trợ cắt thông minh, lật hoặc xoay hình ảnh, tạo hình thu nhỏ hình ảnh, hỗ trợ phóng to hình ảnh, thêm hình mờ và hiệu ứng làm mờ Gaussian, trích xuất cụ thể từ một hình ảnh, cắt hình ảnh, chuyển đổi hình ảnh sang các định dạng khác và nhiều hơn nữa.
Bắt đầu với bimg
Cách dễ nhất và được đề xuất để cài đặt bimg là thông qua GitHub.
Cài đặt bimg qua GitHub
go get -u gopkg.in/h2non/bimg.v1
Chuyển đổi hình ảnh sang các định dạng khác thông qua Go
Thư viện mã nguồn mở bimg cho phép các nhà phát triển phần mềm chuyển đổi hình ảnh theo chương trình sang các định dạng tệp được hỗ trợ khác chỉ với một vài dòng mã Go. Giả sử bạn có định dạng JPEG và bạn muốn chuyển đổi nó sang PNG. Bạn cần cung cấp thông tin hình ảnh như tên hình ảnh, địa chỉ và định dạng chuyển đổi. Hình ảnh sẽ được chuyển đổi thành công sang định dạng được đề xuất một cách dễ dàng.
Chuyển hình JPG sang NG qua thư viện Go
buffer, err := bimg.Read("image.jpg")
if err != nil {
fmt.Fprintln(os.Stderr, err)
}
newImage, err := bimg.NewImage(buffer).Convert(bimg.PNG)
if err != nil {
fmt.Fprintln(os.Stderr, err)
}
if bimg.NewImage(newImage).Type() == "png" {
fmt.Fprintln(os.Stderr, "The image was converted into png")
}
Cắt hoặc thay đổi kích thước hình ảnh
Thư viện bimg miễn phí cung cấp cho các nhà phát triển phần mềm khả năng thay đổi kích thước cũng như cắt hình ảnh của họ bên trong các ứng dụng Go của riêng họ. Bạn cũng cần cung cấp chiều rộng và chiều cao của hình ảnh và vị trí mới. Nó cũng hỗ trợ buộc các hoạt động thay đổi kích thước mà không bảo toàn tỷ lệ khung hình. Bạn cũng có thể thêm văn bản và trích xuất vùng bạn chọn từ một hình ảnh. Cắt xén hình ảnh theo kích thước chính xác được chỉ định.
Resize Image by Go Library
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)
Thêm hình mờ vào hình ảnh
API bimg đã bao gồm chức năng để thêm hình mờ vào hình ảnh bên trong ứng dụng Go một cách dễ dàng. Thêm Hình mờ là một tính năng rất hữu ích để bảo vệ hình ảnh của bạn. Watermarking là cách dễ nhất và rất hữu ích để bảo vệ ảnh của bạn trên internet. Bạn có thể dễ dàng đặt logo hoặc hình mờ văn bản. Thư viện giúp bạn lập trình thêm hình mờ vào hình ảnh của mình trên bất kỳ vị trí đã chọn nào cũng như độ mờ.
Thêm watermark vào hình ảnh qua Go API
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)
Lật và Xoay hình ảnh
Thư viện mã nguồn mở bimg cung cấp cho các nhà phát triển phần mềm khả năng xoay hình ảnh của họ theo nhu cầu của họ bằng cách sử dụng các lệnh ngôn ngữ Go. Có một phương pháp để xoay hình ảnh tự động. Chức năng AutoRotate tự động xoay hình ảnh mà không cần chuyển đổi bổ sung dựa trên siêu dữ liệu định hướng EXIF, nếu có. Nó cũng cung cấp hỗ trợ cho hình ảnh lật hoặc lật, Giải thích hình ảnh, độ dài hình ảnh, siêu dữ liệu hình ảnh và nhiều hơn nữa.
Xoay hình trong Go Apps
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)