Thư viện mã nguồn mở Go để tạo và thao tác hình ảnh

API Go mạnh mẽ hỗ trợ Thay đổi kích thước, Cắt & Xoay Hình ảnh JPEG, PNG, GIF, TIFF và BMP. Bạn cũng có thể điều chỉnh độ sáng hình ảnh, độ tương phản, hiệu chỉnh gamma của hình ảnh.

API Go Imaging mã nguồn mở là một gói rất mạnh cung cấp đầy đủ chức năng liên quan đến tạo và thao tác hình ảnh. Thư viện rất linh hoạt và cho phép các nhà phát triển dễ dàng tạo hình ảnh mới và sửa đổi hình ảnh hiện có chỉ với một vài dòng mã.

Imaging là một thư viện Go thuần túy có kích thước nhỏ và chức năng hiệu quả. Nó đã bao gồm hỗ trợ cho một số định dạng tệp hình ảnh quan trọng như JPEG, PNG, GIF, TIFF, BMP và nhiều định dạng khác. Thư viện cũng đã bao gồm một số bộ lọc lấy mẫu lại để thay đổi kích thước hình ảnh. Một số bộ lọc quan trọng là NearestNeighbor, Lanczos, CatmullRom, MitchellNetravali, Linear, Box, v.v. Thư viện cũng đã tạo điều kiện cho các nhà phát triển tạo các bộ lọc tùy chỉnh.

Thư viện hình ảnh miễn phí bao gồm một số tính năng quan trọng liên quan đến xử lý hình ảnh, chẳng hạn như thay đổi kích thước hình ảnh, xoay hình ảnh, cắt hình ảnh, điều chỉnh độ sáng hình ảnh, điều chỉnh độ tương phản hình ảnh, hiệu chỉnh gamma của hình ảnh, thay đổi độ bão hòa của hình ảnh, sao chép hình ảnh, hình ảnh làm mờ, mã hóa và giải mã hình ảnh, lớp phủ hình ảnh, thêm độ sắc nét, tạo hình thu nhỏ và nhiều tính năng khác.

Previous Next

Bắt đầu với Hình ảnh

Cách dễ nhất và được đề xuất để cài đặt Imagingis qua GitHub.

Cài đặt Hình ảnh qua GitHub

go get -u github.com/disintegration/imaging

Tạo hình ảnh mới qua API Go

Thư viện hình ảnh mã nguồn mở đã bao gồm hỗ trợ tạo hình ảnh mới bên trong ứng dụng của riêng họ bằng cách sử dụng lệnh Go. Việc tạo hình ảnh mới yêu cầu chiều rộng, chiều cao, màu nền của hình ảnh và định dạng đầu ra của hình ảnh. Bạn cũng có thể dễ dàng sửa đổi hình ảnh đã tạo và thực hiện các thao tác khác nhau như lật, thiết lập độ mờ, pha trộn, làm mờ và hơn thế nữa.

Tạo hình ảnh mới qua API Go

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

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

Các nhà phát triển phần mềm có thể dễ dàng chuyển đổi hình ảnh của họ sang các định dạng tệp được hỗ trợ khác bên trong Ứng dụng GO của riêng họ bằng cách sử dụng thư viện hình ảnh miễn phí. Bạn chỉ cần cung cấp tên ảnh và định dạng ảnh đầu ra. Sử dụng chức năng Lưu, bạn có thể dễ dàng xuất hình ảnh sang một số định dạng tệp hình ảnh được hỗ trợ khác như PNG, BMP, GIF, JPEG, TIFF, v.v.

Thay đổi kích thước và cắt hình ảnh

API hình ảnh miễn phí đã bao gồm chức năng thay đổi kích thước hình ảnh theo nhu cầu của bạn bằng cách sử dụng lệnh Go. Đầu tiên, bạn cần mở một hình ảnh và cung cấp chiều cao cũng như chiều rộng của hình ảnh để thay đổi kích thước. Một tùy chọn khác là bạn có thể thay đổi kích thước hình ảnh bằng cách chỉ cung cấp chiều rộng bằng cách giữ nguyên tỷ lệ khung hình. Thư viện cũng cho phép cắt ảnh gốc bằng cách cung cấp chiều rộng, chiều cao tùy chỉnh và sử dụng neo ở giữa.

Crop and Resize Image through 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)
}

Lật, Xoay, Làm mờ & Sao chép Hình ảnh

Thư viện hình ảnh đã bao gồm một số tính năng quan trọng cho thao tác hình ảnh như lật hình ảnh, xoay hình ảnh, làm mờ và nhân bản. Để tạo bản sao của một hình ảnh hiện có, bạn chỉ cần gọi chức năng Sao chép và cung cấp hình ảnh hiện có. Thư viện cũng hỗ trợ xoay và lật hình ảnh của bạn chỉ với một vài dòng mã. Bạn có thể dễ dàng xoay hình ảnh theo góc đã cho ngược chiều kim đồng hồ. Tham số góc là góc quay theo độ.

Clone Image through 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
}
 Tiếng Việt