Go API để xử lý hình ảnh dựa trên HTTP

Thư viện mã nguồn mở Go hỗ trợ cắt ảnh thông minh trực tuyến, lật hoặc xoay hình ảnh, tạo hình ảnh thu nhỏ, phóng to hình ảnh, thêm hình mờ vào PNG, WEBP, TIFF, PDF, GIF và SVG, v.v.

Hình ảnh tưởng tượng là một API Go xử lý hình ảnh dựa trên HTTP mã nguồn mở rất mạnh, cung cấp cho các nhà phát triển phần mềm sức mạnh để thực hiện các hoạt động hình ảnh nâng cao thông qua các dịch vụ HTTP riêng hoặc công cộng với mức độ phụ thuộc ít hơn. Nó hỗ trợ các hoạt động nâng cao như ủy quyền mã thông báo API, bảo vệ chữ ký URL, chiến lược điều tiết lưu lượng HTTP và hỗ trợ CORS cho các ứng dụng khách web. Thư viện có thể đọc hình ảnh từ tải trọng HTTP POST, đường dẫn cục bộ của máy chủ hoặc máy chủ HTTP từ xa.

Thư viện ảo là một thư viện mạnh mẽ và ổn định được xây dựng dựa trên libvips để xử lý hình ảnh nhanh chóng và hiệu quả. Thư viện đã bao gồm hỗ trợ cho các định dạng hình ảnh như JPEG, PNG, HEIF, WEBP, TIFF, PDF, GIF và SVG cũng như chuyển đổi trong suốt giữa các định dạng này. Nó đã cung cấp hỗ trợ đầy đủ cho Docker & Fly.io. Điều tuyệt vời về Fly là nó có thể giảm độ trễ và cung cấp phương pháp thực hành tốt hơn bằng cách cung cấp lưu lượng truy cập gần vị trí của người dùng của bạn.

Thư viện tưởng tượng hỗ trợ đầy đủ một số tính năng quan trọng liên quan đến tạo, chuyển đổi và thao tác hình ảnh như thay đổi kích thước hình ảnh, phóng to hình ảnh, cắt hình ảnh, cắt ảnh thông minh, xoay hình ảnh, Tự động quay với các phép biến đổi hình ảnh khác, tự động lật dựa trên siêu dữ liệu EXIF, hình ảnh flop, thu phóng hình ảnh, tạo hình thu nhỏ hình ảnh, phù hợp hình ảnh, nhúng hoặc mở rộng hình ảnh, thêm hình mờ, thêm hiệu ứng làm mờ cho hình ảnh và nhiều hơn nữa.

Previous Next

Bắt đầu với tưởng tượng

Cách dễ nhất và được đề xuất để cài đặt ảo là thông qua GitHub.

Cài đặt ảo qua GitHub

go get -u github.com/h2non/imaginary

Chuyển đổi hình ảnh sang các định dạng khác thông qua Go

Thư viện ảo API mã nguồn mở đã bao gồm hỗ trợ để chuyển đổi hình ảnh của bạn sang các định dạng tệp được hỗ trợ khác một cách dễ dàng. Bạn có thể lưu hình ảnh ở một số định dạng rất hữu ích như định dạng JPEG, PNG và WEBP. Thư viện đã cung cấp hỗ trợ chuyển đổi với các cài đặt chất lượng và nén bổ sung. Bạn chỉ cần cung cấp tên hình ảnh, địa chỉ và định dạng chuyển đổi chính xác và thư viện sẽ dễ dàng chuyển đổi nó cho bạn chỉ với một vài lệnh Go.

Chuyển hình ảnh qua thư viện tưởng tượng

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)
}

Cắt hình ảnh trực tuyến qua Go

Thư viện tưởng tượng mã nguồn mở cho phép các nhà phát triển phần mềm cắt hình ảnh của họ trực tuyến chỉ với một vài dòng mã Go bên trong các ứng dụng của riêng họ. Bạn có thể cắt hình ảnh của mình bằng cách cung cấp chiều rộng hoặc chiều cao tùy chỉnh. Thư viện giúp công việc của bạn trở nên dễ dàng bằng cách duy trì tỷ lệ Hình ảnh. Thư viện cũng hỗ trợ cắt ảnh bằng cách sử dụng thuật toán xén thông minh tích hợp trong libvips. Bạn cũng có thể xác định mức độ nén hình ảnh cho hình ảnh PNG và lật, lật và xoay hình ảnh của bạn một cách dễ dàng.

Hình ảnh rơi qua thư viện Go

{
    "operation": "crop",
    "params": {
      "width": 500,
      "height": 300
    }

Thay đổi kích thước hình ảnh cho phù hợp

Thư viện tưởng tượng miễn phí đã bao gồm hỗ trợ thay đổi kích thước hình ảnh để phù hợp bằng cách sử dụng lệnh Go bên trong ứng dụng của họ. Bạn có thể dễ dàng thay đổi kích thước hình ảnh để vừa với chiều rộng và chiều cao mà không cần cắt xén. Thư viện giúp công việc của bạn trở nên dễ dàng bằng cách duy trì tỷ lệ khung hình hình ảnh. Chiều rộng và chiều cao chỉ định một hộp giới hạn tối đa cho hình ảnh.

Resize Image by 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)
}

Xoay và tự động xoay hình ảnh của bạn

Thư viện tưởng tượng miễn phí đã cung cấp chức năng xoay hình ảnh của bạn một cách dễ dàng. Nó cũng đã bao gồm một chức năng rất hữu ích để tự động xoay hình ảnh bên trong các ứng dụng Go. Nó tự động xoay hình ảnh mà không cần biến đổi hình ảnh nào nữa dựa trên siêu dữ liệu định hướng EXIF. Phương pháp AutoRotate tạo ra một hình ảnh mới có cùng kích thước và định dạng với hình ảnh đầu vào.

Auto-Rotate Image by Free Go Library

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{}
		}
	}
 Tiếng Việt