PDA

View Full Version : انتخاب بخشی از عکس picturebox بوسیله ماوس



adabyron
سه شنبه 25 دی 1386, 09:59 صبح
سلام.
قبلش بگم که کلی توی سایت جستجو کردم و چون چیزی پیدا نکردم این تاپیک رو زدم.
من توی برنامم از اسکنر برای اسکن عکس استفاده می کنم. عکس بعد از اسکن در یک picturebox نمایش داده میشه حالا میخوام قسمتی از عکس را که مورد نظره با استفاده از ماوس انتخاب و در مسیر دلخواه با پسوند jpg یا bmp ذخیره کنم . ممنون میشم در این زمینه راهنماییم کنید .

adabyron
سه شنبه 25 دی 1386, 10:30 صبح
:ناراحت:
چرا کسی کمک نمیکنه ؟؟؟

sinpin
سه شنبه 25 دی 1386, 13:31 عصر
سلام.
قبلش بگم که کلی توی سایت جستجو کردم و چون چیزی پیدا نکردم این تاپیک رو زدم.
من توی برنامم از اسکنر برای اسکن عکس استفاده می کنم. عکس بعد از اسکن در یک picturebox نمایش داده میشه حالا میخوام قسمتی از عکس را که مورد نظره با استفاده از ماوس انتخاب و در مسیر دلخواه با پسوند jpg یا bmp ذخیره کنم . ممنون میشم در این زمینه راهنماییم کنید .
توی سایت codeproject و در مورد Image processing و crop کردن تصاویر جستجو کنید.

adabyron
سه شنبه 25 دی 1386, 13:50 عصر
از توجهتون ممنونم . سرچ کردم و برنامه های خیلی کاملی پیدا کردم اما من یه کد ساده میخوام یعنی الان وقتشو ندارم که این برنامه ها رو بررسی کنم یه راه راحت تری نیست ؟
هیچ تابع api در این رابطه وجود نداره ؟؟

adabyron
سه شنبه 25 دی 1386, 16:01 عصر
البته هیچکدوم از این برنامه هایی که من دیدم بخشی از عکس رو select نمیکنه

Mahdi.Kiani
سه شنبه 25 دی 1386, 16:08 عصر
سلام.
قبلش بگم که کلی توی سایت جستجو کردم و چون چیزی پیدا نکردم این تاپیک رو زدم.
من توی برنامم از اسکنر برای اسکن عکس استفاده می کنم. عکس بعد از اسکن در یک picturebox نمایش داده میشه حالا میخوام قسمتی از عکس را که مورد نظره با استفاده از ماوس انتخاب و در مسیر دلخواه با پسوند jpg یا bmp ذخیره کنم . ممنون میشم در این زمینه راهنماییم کنید .




Bitmap currentImage = new Bitmap([your image]);
Bitmap cropedImage = currentImage.Clone[(area for new image],[image format]);



your image= عکس اصلی (همونی که اسکن کردی)
area for new image= کادری که می خوای به اندازه اون عکست انتخاب بشه
image format= معلومه چیه !!
cropedImage= عکسیه که انخاب کردی
حالا با CropImage هر کاری میخوای بکن
مثلا



cropedImage.Save(....);

sinpin
سه شنبه 25 دی 1386, 23:45 عصر
سلام.
قبلش بگم که کلی توی سایت جستجو کردم و چون چیزی پیدا نکردم این تاپیک رو زدم.
من توی برنامم از اسکنر برای اسکن عکس استفاده می کنم. عکس بعد از اسکن در یک picturebox نمایش داده میشه حالا میخوام قسمتی از عکس را که مورد نظره با استفاده از ماوس انتخاب و در مسیر دلخواه با پسوند jpg یا bmp ذخیره کنم . ممنون میشم در این زمینه راهنماییم کنید .
من این کد رو همین الان فی البداهه نوشتم و بهینه نیست. اما شاید بتونید ازش - یه کوچولو - ایده بگیرید :
(یک کنترل PictureBox و یک دکمه روی فرم داشته باشید و به آدرس تصویر در Form Load هم توجه داشته باشید)

private Point startLocation;
private Rectangle rect;
private bool flagDraw = false;

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
flagDraw = true;
startLocation = e.Location;
}

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
flagDraw = false;
rect.X = startLocation.X;
rect.Width = e.X - startLocation.X;
rect.Y = startLocation.Y;
rect.Height = e.Y - startLocation.Y;
DrawRectangle(rect);
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (!flagDraw)
return;
rect.X = startLocation.X;
rect.Width = e.X - startLocation.X;
rect.Y = startLocation.Y;
rect.Height = e.Y - startLocation.Y;
DrawRectangle(rect);
}

private void DrawRectangle(Rectangle _rect)
{
pictureBox1.Refresh();
Graphics flat = pictureBox1.CreateGraphics();
flat.DrawRectangle(new Pen(Brushes.Red, 2), _rect);
}

private void btnCrop_Click(object sender, EventArgs e)
{
pictureBox1.Refresh();
Bitmap bmp = new Bitmap(pictureBox1.Image);
pictureBox1.Image = bmp.Clone(rect, System.Drawing.Imaging.PixelFormat.Undefined);
}

sinpin
چهارشنبه 26 دی 1386, 00:02 صبح
قبل از اینکه منو تیربارون کنید (!) خودم یه نکته بگم :
الان که تست کردم دیدم؛ کد بالا واسه حالتی که x2 یا y2 از x1 یا y1 کوچکتر بشه کار نمیکنه (خودتون تغییرش بدید لطفا) و قطعا بهینه هم نوشته نشده (صرف آموزش است)
...

adabyron
سه شنبه 02 بهمن 1386, 14:19 عصر
اینم یه برنامه دیگه :