29-01-13, 10:06 PM
[COLOR="#B22222"]بسم الله الرحمن الرحيم
((رب اشرح لي صدري ويسر لي أمري واحلل عقدة من لساني يفقه قولي))
صدق الله العلي العظيم
[/COLOR]
((رب اشرح لي صدري ويسر لي أمري واحلل عقدة من لساني يفقه قولي))
صدق الله العلي العظيم
[/COLOR]
[COLOR="#B22222"]بسم الله الرحمن الرحيم
وصلى الله على محمد وآله الطاهرين
[/COLOR]
وصلى الله على محمد وآله الطاهرين
[/COLOR]
السلام عليكم اخواني واخواتي زوار واعضاء المنتدى الاعزاء عدنا اليكم والعود عود احمد بدورس جديدة في الImage Processing باستخدام لغة C#.Net, في الدرس السابق تعلمنا كيف نعملMirror او(FlipHorezintal) للصورة وذلك عن طريق عكس عرض الصورة بطريقة سهلة جدا, والآن سنتعلم FlipVertical و FlipBoth أي عكس الصورة بصورة عمودية وعكس الصورة بصورة افقية وعمودية معا.
[COLOR="#800000"]هيا لنعمل FlipVerticl للصورة :
الطريقة سهلة جدا وذلك بعكس ارتفاع او طول الصورة Height:
اليك الكود:[/COLOR]
PHP كود :
private void button1_Click(object sender, EventArgs e)
{
int v;
bmpdata = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
IntPtr scan0 = bmpdata.Scan0;
unsafe
{
stride = bmpdata.Stride;
remain = stride - bmp.Width * 3;
byte* p = (byte*)(void*)scan0;
for (i = 0; i < bmp.Height; i++)
{
for (j = 0; j < bmp.Width; j++)
{
v = (bmp.Height - 1 - i);//Flipping the column pixels
p[2] = (byte)c[j, v].R;//Red
p[1] = (byte)c[j, v].G;//Green
p[0] = (byte)c[j, v].B;//Blue
p += 3;
}
p += remain;
}
bmp.UnlockBits(bmpdata);
}
pictureBox1.Image = bmp;
}
[COLOR="#800000"]اما لعمل FlipHorezintal فكل ما عليك فعله هو عكس عرض(Width) الصورة ,اما اذا اردنا ان نعمل (FlipBoth) فنعكس طول و عرض الصورة معا(Height and Width)
اليك هذا الكود لعمل FlipBoth:[/COLOR]
PHP كود :
private void button2_Click(object sender, EventArgs e)
{
int h, v;
bmpdata = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
IntPtr scan0 = bmpdata.Scan0;
unsafe
{
stride = bmpdata.Stride;
remain = stride - bmp.Width * 3;
byte* p = (byte*)(void*)scan0;
for (i = 0; i < bmp.Height; i++)
{
for (j = 0; j < bmp.Width; j++)
{
h = (bmp.Width - 1 - j);//Flipping the row pixels
v = (bmp.Height - 1 - i);//Flipping the column pixels
p[2] = (byte)c[h, v].R;//Red
p[1] = (byte)c[h, v].G;//Green
p[0] = (byte)c[h, v].B;//Blue
p += 3;
}
p += remain;
}
bmp.UnlockBits(bmpdata);
}
pictureBox1.Image = bmp;
}
[COLOR="#800000"]والحمد لله انتهينا من الدرس الرابع الى ان القاكم في الدرس القادم بامكانكم طرح الاسئلة كي اجيب عنها قدر الامكان.
----------------------------------------------------------------------------------
[/COLOR]