نوشتن متن بر روی عکس

نوشتن متن بر روی عکس

این مقاله به شما نشان می دهد که چگونه به صورت دینامیک متنی را بر روی عکسی که از قبل وجود داشته بنویسیم. این برنامه با استفاده از Asp.Net و C# نوشته شده است.
در این مثال من، یک عکس از پسرم دارم و متن
"That's my boy" را روی آن می نویسم. همچنین برای نشان دادن اینکه می توان گرافیک و رسم و متن را با هم به کار ببریم، من سپس یک شکل بیضی را دور متن رسم کرده ام و آن را روی عکس قرار داده ام.
برای اینکه بتوانید این برنامه را بنویسید لازم است که رفرنس های زیر را به برنامه اضافه کنید: 

using System.Drawing;
     using System.Drawing.Imaging;
     using System.Drawing.Drawing2D;
     using System.Drawing.Text;

همچنین ممکن است شما بخواهید جای متن و بیضی را در روی عکستان تغییر دهید. به یاد داشته باشید که مکان متن و شکل بیضی هر دو بر روی مختصات X و Y بنا نهاده شده اند. بنابراین، اگر بخواهید متن و یا بیضی را به سمت بالا حرکت دهید، باید مقدار پارامتر Y را تغییر دهید. و اگر بخواهید متن و بیضی را به صورت افقی حرکت دهید، باید مقدار پارامتر X را تغییر دهید.
به طور اساسی 6 مرحله برای این مثال وجود دارد:


           1-      بارگذاری عکس: 

//Load the Image to be written on.
Bitmap bitMapImage = new
   System.Drawing.Bitmap(Server.MapPath("dallen.jpg" )  );
Graphics graphicImage = Graphics.FromImage( bitMapImage );
2-      ست کردن شیء graphics تا به صورت هموار (smooth)در آید:
//Smooth graphics is nice.
graphicImage.SmoothingMode = SmoothingMode.AntiAlias;

3-      نوشتن متن. اینجا جایی است که باید فونت خود را ست کنید. مختصات X و Y در نقطه ی جدیدی هستند.(100=X , 250=Y)

//Write your text.
graphicImage.DrawString( "That's my boy!",
   new Font("Arial", 12,FontStyle.Bold ),
   SystemBrushes.WindowText, new Point( 100, 250 ) );
4-      رسم کردن بیضی اطراف متن. نکته: برای ساختن اندازه ی دلخواه برای بیضی خود با اعداد بازی کنید. 
//I am drawing a oval around my text.
graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360);
5-      ست کردن خصوصیت Content Type به jpg و سپس نوشتن عکس در response stream
//Set the content type
Response.ContentType="image/jpeg";
//Save the new image to the response output stream.
bitMapImage.Save(Response.OutputStream, ImageFormat.Jpeg);

6-      پاک کردن حافظه 

//Clean house.
graphicImage.Dispose();
bitMapImage.Dispose();

 

مرتضی جنگجو

برنامه نویس fullstack با بیش از 14 سال سابقه کار و همکاری در توسعه و پیاده سازی نرم افزارهای تحت وب با تکنولوژی Net. در شرکتهای بزرگ ایرانی، هلندی، فنلاندی و ترکیه

شبکه های اجتماعی نویسنده

دیدگاه کاربران