کتابخانه Go منبع باز برای ایجاد و دستکاری تصویر

API قدرتمند Go که از تغییر اندازه، برش و چرخش تصاویر JPEG، PNG، GIF، TIFF و BMP پشتیبانی می‌کند. همچنین می توانید روشنایی تصویر، کنتراست، تصحیح گامای تصاویر را تنظیم کنید.

API متن باز Go Imaging یک بسته بسیار قدرتمند است که عملکرد کامل مربوط به ایجاد و دستکاری تصویر را ارائه می دهد. این کتابخانه بسیار منعطف است و به توسعه دهندگان این امکان را می دهد که به راحتی تصاویر جدید ایجاد کرده و تصاویر موجود را تنها با چند خط کد اصلاح کنند.

Imaging یک کتابخانه Go خالص است که از نظر اندازه کوچک و از نظر عملکرد کارآمد است. این شامل پشتیبانی از چندین فرمت فایل تصویری مهم مانند JPEG، PNG، GIF، TIFF، BMP و بسیاری موارد دیگر است. این کتابخانه همچنین چندین فیلتر نمونه‌برداری مجدد برای تغییر اندازه تصویر در نظر گرفته است. برخی از فیلترهای مهم عبارتند از NearestNeighbor، Lanczos، CatmullRom، MitchellNetravali، Linear، Box و غیره. این کتابخانه همچنین توسعه دهندگان را برای ایجاد فیلترهای سفارشی تسهیل کرده است.

کتابخانه رایگان Imaging چندین ویژگی مهم مربوط به پردازش تصویر را شامل می شود، مانند تغییر اندازه تصاویر، چرخش تصویر، برش تصویر، تنظیم روشنایی تصویر، تنظیمات کنتراست تصویر، تصحیح گاما تصاویر، تغییر اشباع تصویر، شبیه سازی تصاویر، تصویر. تار کردن، کدگذاری و رمزگشایی تصاویر، همپوشانی تصویر، اضافه کردن وضوح، ایجاد تصویر کوچک و بسیاری از ویژگی های دیگر.

Previous Next

شروع کار با تصویربرداری

ساده ترین و توصیه شده ترین راه برای نصب Imagingis از طریق GitHub.

Imaging را از طریق GitHub نصب کنید

go get -u github.com/disintegration/imaging

ایجاد تصویر جدید از طریق Go API

کتابخانه تصویری منبع باز شامل پشتیبانی از تولید تصاویر جدید در داخل برنامه خود با استفاده از دستورات Go است. ایجاد تصویر جدید به عرض، ارتفاع، رنگ پس‌زمینه تصویر و فرمت خروجی تصویر نیاز دارد. شما همچنین می توانید به راحتی تصویر ایجاد شده را تغییر دهید و عملیات مختلفی مانند flip، تنظیم opacity، blend، blur و موارد دیگر را انجام دهید.

ایجاد تصویر جدید از طریق 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 خود تبدیل کنند. فقط باید نام تصویر و فرمت تصویر خروجی را وارد کنید. با استفاده از تابع Save می توانید به راحتی تصاویر را به چندین فرمت فایل تصویری پشتیبانی شده دیگر مانند PNG، BMP، GIF، JPEG، TIFF و غیره صادر کنید.

تغییر اندازه و برش تصاویر

API تصویربرداری رایگان دارای قابلیتی برای تغییر اندازه تصاویر بر اساس نیاز شما با استفاده از دستورات Go است. ابتدا باید یک تصویر را باز کنید و ارتفاع و همچنین عرض تصویر را برای تغییر اندازه آن مشخص کنید. گزینه دیگر این است که می توانید اندازه تصویر را تنها با ارائه عرض با حفظ نسبت تصویر تغییر دهید. این کتابخانه همچنین امکان برش تصویر اصلی را با ارائه عرض، ارتفاع سفارشی و استفاده از لنگر مرکزی فراهم می‌کند.

برش و تغییر اندازه تصویر از طریق 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)
}

ورق زدن، چرخش، محو کردن و شبیه سازی تصاویر

کتابخانه Imaging چندین ویژگی مهم برای دستکاری تصویر مانند چرخش تصویر، چرخش تصویر، محو کردن و شبیه سازی را شامل می شود. برای ایجاد یک کپی از یک تصویر موجود، فقط باید تابع Clone را فراخوانی کنید و تصویر موجود را ارائه دهید. این کتابخانه همچنین از چرخاندن و چرخاندن تصویر شما تنها با چند خط کد پشتیبانی می کند. شما به راحتی می توانید یک تصویر را با زاویه داده شده در خلاف جهت عقربه های ساعت بچرخانید. پارامتر زاویه زاویه چرخش بر حسب درجه است.

شبیه سازی تصویر از طریق 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
}
 فارسی