Open Source Go Library สำหรับการสร้างและจัดการรูปภาพ

Go API อันทรงพลังที่รองรับการปรับขนาด ครอบตัด และหมุนรูปภาพ JPEG, PNG, GIF, TIFF และ BMP คุณยังสามารถปรับความสว่างของภาพ คอนทราสต์ การแก้ไขแกมมาของภาพได้

Go Imaging API แบบโอเพ่นซอร์สเป็นแพ็คเกจที่ทรงพลังมากซึ่งมีฟังก์ชันการทำงานที่สมบูรณ์ซึ่งเกี่ยวข้องกับการสร้างและปรับแต่งรูปภาพ ไลบรารี่มีความยืดหยุ่นสูงและช่วยให้นักพัฒนาสามารถสร้างภาพใหม่และแก้ไขภาพที่มีอยู่ได้อย่างง่ายดายด้วยโค้ดเพียงไม่กี่บรรทัด

The Imaging เป็นไลบรารี Go แท้ ๆ ที่มีขนาดเล็กและมีประสิทธิภาพในการทำงาน รวมการรองรับไฟล์รูปภาพที่สำคัญหลายรูปแบบ เช่น JPEG, PNG, GIF, TIFF, BMP และอื่นๆ อีกมากมาย ห้องสมุดยังได้รวมตัวกรองการสุ่มตัวอย่างหลายตัวสำหรับการปรับขนาดภาพ ตัวกรองที่สำคัญบางตัว ได้แก่ NearestNeighbor, Lanczos, CatmullRom, MitchellNetravali, Linear, Box และอื่นๆ ห้องสมุดยังอำนวยความสะดวกให้นักพัฒนาสร้างตัวกรองแบบกำหนดเอง

ไลบรารีภาพฟรีได้รวมคุณสมบัติที่สำคัญหลายอย่างที่เกี่ยวข้องกับการประมวลผลภาพ เช่น การปรับขนาดภาพ การหมุนภาพ การครอบตัดภาพ การปรับความสว่างของภาพ การปรับความคมชัดของภาพ การแก้ไขแกมมาของภาพ การเปลี่ยนความอิ่มตัวของภาพ ภาพโคลน ภาพ เบลอ, เข้ารหัสและถอดรหัสรูปภาพ, ซ้อนภาพ, เพิ่มความคมชัด, สร้างภาพขนาดย่อและคุณสมบัติอื่น ๆ อีกมากมาย

Previous Next

เริ่มต้นกับการถ่ายภาพ

วิธีที่ง่ายที่สุดและแนะนำในการติดตั้ง Imagingis ผ่าน GitHub

ติดตั้งภาพผ่าน GitHub

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 Apps ของตนเองโดยใช้ไลบรารีรูปภาพฟรี คุณเพียงแค่ต้องระบุชื่อภาพและรูปแบบภาพที่ส่งออก เมื่อใช้ฟังก์ชันบันทึก คุณจะสามารถส่งออกรูปภาพไปยังรูปแบบไฟล์รูปภาพที่รองรับอื่นๆ ได้หลายรูปแบบ เช่น PNG, BMP, GIF, JPEG, TIFF และอื่นๆ

ปรับขนาดและครอบตัดรูปภาพ

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

พลิก หมุน เบลอ & โคลนรูปภาพ

ไลบรารีรูปภาพได้รวมคุณสมบัติที่สำคัญหลายประการสำหรับการจัดการภาพ เช่น การพลิกภาพ การหมุนภาพ การเบลอ และการโคลน ในการทำสำเนาของรูปภาพที่มีอยู่ คุณเพียงแค่เรียกใช้ฟังก์ชัน Clone และจัดเตรียมรูปภาพที่มีอยู่ ไลบรารียังรองรับการหมุนและพลิกภาพของคุณด้วยโค้ดเพียงไม่กี่บรรทัด คุณสามารถหมุนภาพได้อย่างง่ายดายด้วยมุมที่กำหนดทวนเข็มนาฬิกา พารามิเตอร์มุมคือมุมการหมุนเป็นองศา

ภาพโคลนผ่านไป 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
}
 ไทย