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 และอื่นๆ ห้องสมุดยังอำนวยความสะดวกให้นักพัฒนาสร้างตัวกรองแบบกำหนดเอง
ไลบรารีภาพฟรีได้รวมคุณสมบัติที่สำคัญหลายอย่างที่เกี่ยวข้องกับการประมวลผลภาพ เช่น การปรับขนาดภาพ การหมุนภาพ การครอบตัดภาพ การปรับความสว่างของภาพ การปรับความคมชัดของภาพ การแก้ไขแกมมาของภาพ การเปลี่ยนความอิ่มตัวของภาพ ภาพโคลน ภาพ เบลอ, เข้ารหัสและถอดรหัสรูปภาพ, ซ้อนภาพ, เพิ่มความคมชัด, สร้างภาพขนาดย่อและคุณสมบัติอื่น ๆ อีกมากมาย
เริ่มต้นกับการถ่ายภาพ
วิธีที่ง่ายที่สุดและแนะนำในการติดตั้ง 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
}