در این قسمت تیم کدگیت را با آموزش ساخت تصویر معکوس در سی شارپ همراهی کنید. در آموزشهای گذشته پردازش تصویر، مبانی خواندن و نوشتن یک عکس در سی شارپ بیان شد در این قسمت ابتدا الگوریتم ساخت تصویر معکوس در سی شارپ را تشریح میکنیم سپس به پیادهسازی این الگوریتم میپردازیم. همچنین پیشنهاد میکنیم قبل از مطالعه این جلسه، آموزشهای زیر را مطالعه کنید:
ساخت تصویر معکوس در سی شارپ
در این بخش ما به ایجاد کردن یک تصویر معکوس میپردازیم. اصلیترین گام برای ایجاد تصویر معکوس، جابجایی مقادیر پیکسل از چپ به راست است. بدین صورت که ما تصویر ورودی خود را از چپ خوانده و در سمت راست (نقطه معکوس) آن تصویر انتقال میدهیم. الگوریتم این روش به صورت زیر است:
- دو Bitmap برای تصویر ورودی و تصویر معکوس که میخواهید بسازید، ایجاد کنید.
- دو متغیر برای اشاره به سمت چپ و راست تصویر ایجاد کنید. (rx اشاره به سمت راست تصویر و lx اشاره به سمت چپ میکند)
- مقادیر ARGB (Alpha, Red, Green and Blue)، را از تصویر اولیه (به ترتیب چپ به راست) بدست اورید.
- در تصویر تازه ایجاد شده (به ترتیب راست به چپ) ، ARGB (Alpha, Red, Green and Blue)آنها را قرار دهید.
- مراحل 3 و4 را برای هریک از پیکسل های تصویر تکرار کنید.

پیادهسازی تصویر معکوس در سی شارپ
همانطور که در قسمت قبل گفته شد برای پیاده سازی تصویر معکوس، پیکسلهای تصویری را از چپ به راست خوانده و در تصویر جدیدی از راست به چپ میریزیم. برای پیاده سازی دو متغیر lx و rx را در نظر میگیریم. Lx اشارهگر به پیکسلهای تصویر اصلی است و rx اشارهگر به تصویر معکوس ما.
ابتدا lx عدد صفر و rx به اندازه عرض تصویر ما است. با حرکت lx به سمت راست (خواندن تصویر اصلی) یکی از rx کم میشود. دقت کنید به ازای حرکت یک پیکسل به lx یکی اضافه میشود و از rx کم میشود. کد پیادهسازی این الگوریتم به صورت زیر است:
class MainClass
{
public static void Main (string[] args)
{
Bitmap myBitmap = new Bitmap("mirrorInput.jpg");
int width = myBitmap.Width;
int height = myBitmap.Height;
Bitmap output = new Bitmap(width, height);
for (int y = 0; y < height; y++)
{
for (int lx = 0, rx = width - 1; lx < width; lx++, rx--)
{
Color pixelColor = myBitmap.GetPixel(lx, y);
output.SetPixel(rx, y, pixelColor);
}
}
output.Save("mirroroutput.png");
Console.WriteLine
("Press any key to Finish Create mirror Image....");
Console.ReadKey ();
}
}
ورودی کد بالا به صورت زیر است:

خروجی برنامه به صورت زیر است:
