تا %60 درصد تخفیف برای تنها 1 نفر با کد 2CKEB7EL + صدور گواهینامه فقط تا
000000

افزودن Watermark به تصاویر در ASP.NET MVC

اگر دقت کرده باشید، کلیه تصاویری که در وب سایت ITPRO بارگذاری می شوند دارای Watermark هستند، یعنی به قسمت پایین تصویر یک متن اضافه می شود که به آن Watermark گفته می شود. افزودن Watermark بیشتر برای این است که با کپی کردن تصاویر وب سایت شما، در خود تصویر نام وب سایت درج شده باشد. در این مطلب قصد داریم به شما نحوه افزودن Watermark به تصاویر را در ASP.NET MVC آموزش دهم.

فرض کنید که می خواهیم برای Watermark یک متن را به انتهای تصویر اضافه کنیم، برای اینکار ابتدا یک متد به صورت زیر تعریف می کنیم:

public Image AddImageWatermark(Image image, string copyright)
{
	var imgPhoto = image;
	var phWidth = imgPhoto.Width;
	var phHeight = imgPhoto.Height;

	var newImage = new Bitmap(imgPhoto);

	var grPhoto = Graphics.FromImage(newImage);

	grPhoto.SmoothingMode = SmoothingMode.AntiAlias;
	grPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, phWidth, phHeight), 0, 0, phWidth, phHeight, GraphicsUnit.Pixel);

	var sizes = new[] { 16, 14, 12, 10, 8, 6, 4 };
	Font font = null;
	var size = new SizeF();
	for (var i = 0; i < 7; i++)
	{
		font = new Font("arial", sizes[i], FontStyle.Bold);
		size = grPhoto.MeasureString(copyright, font);

		if ((ushort)size.Width < (ushort)phWidth)
			break;
	}

	var yPixlesFromBottom = (int)(phHeight * .05);
	var yPosFromBottom = ((phHeight - yPixlesFromBottom) - (size.Height / 2));
	var xCenterOfImg = (phWidth / 2);

	var format = new StringFormat { Alignment = StringAlignment.Center };

	var semiTransBrush2 = new SolidBrush(Color.FromArgb(153, 0, 0, 0));

	grPhoto.DrawString(copyright, font, semiTransBrush2, new PointF(xCenterOfImg + 1, yPosFromBottom + 1), format);

	var semiTransBrush = new SolidBrush(Color.FromArgb(153, 255, 255, 255));

	grPhoto.DrawString(copyright, font, semiTransBrush, new PointF(xCenterOfImg, yPosFromBottom), format);

	return newImage;
}

کد بالا دو پارامتر به عنوان ورودی می گیرد، یکی تصویری که قرار است watermark به آن اضافه شود و دیگری متنی که می خواهیم بر روی تصویر درج کنیم، خروجی این متد هم یک تصویر به همراه Watermark است. به صورت زیر می توانیم از این کد استفاده کنیم:

var imageWithWatermark = AddImageWatermark(myImage, "وب سایت ITPRO");

با اجرای کد بالا، متن مشخص شده به انتهای تصویر اضافه خواهد شد. امیدوارم که این نکته مورد توجه شما دوستان عزیز قرار گرفته باشد. ITPRO باشید

نویسنده: حسین احمدی

منبع: ITPRO

7 نظر
behnam_r12

سلام

ممنون از مطالب سایتتون خیلی مفید هستند

فقط متوجه نشدم این کد رو باید به چه شکلی استفاده کنیم

var imageWithWatermark = AddImageWatermark(myImage, "وب سایت ITPRO");

این کد رو در یک اکشن می گذاریم

public Image AddImageWatermark(Image image, string copyright)

{

درسته؟

حسین احمدی

سلام، بهتره که این متد رو داخل یک کلاس قرار بدید و از کلاس یک شئ بسازید و از متد استفاده کنید.

behnam_r12

من در یک کلاس تعریف کردم

موقع فراخوانی مشکل دارم


                        ImageWatermark iw = new ImageWatermark();
                        var picWatermark = "NoImageProduct.jpg";

                        ImageResizer img = new ImageResizer();
                        img.Resize(Server.MapPath("~/imgUpload/" + rt.PicProduct),
                            Server.MapPath("~/imgUpload/Thumb/" + rt.PicProduct),iw.AddImageWatermark(picWatermark, "aaaa"));

آیا درست نوشتم؟

behnam_r12

آقا احمدی جواب منو بده خیلی وقته منتظرم، خیلی آقایی

حسین احمدی

سلام مجدد، شرمنده، درگیر بخش آزمون سایت بودم فراموش کردم جواب بدم، در مورد مشکلی که فرمودید، به این خاطر هست که شما اول باید تصویر رو بارگذاری کنید و بعد ازش استفاده کنید:

ImageWatermark iw = new ImageWatermark();
var picWatermark = "NoImageProduct.jpg";
var path = Server.MapPath("~/imagUpload/"+picWatermark);
var img = Image.FromFile(path);
var newImage = iw.AddImageWatermark(img,"aaaa");
newImage.Save(Server.MapPath("~/Images/newimag.png"));
برنامه نویس

برای watermark کردن عکسی که به صورت base 64 در آمده آیا راهی هست ؟

حسین احمدی

سلام، شما در هر صورت باید عکس رو در سمت سرور Watermark کنید، می تونید رشته ای که به صورت base64 هست رو به Image تبدیل کنید و Watermark رو بهش اضافه کنید.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر