PDA

View Full Version : ذخیره تصویر چرخانده شده روی فایل اصلی



cerezaei65
سه شنبه 28 آذر 1391, 07:50 صبح
سلام
توی فرمم عکسهارو لود میکنم، بعضی از عکسها ممکنن نیاز به rotate داشته باشن!میخوام بعد از چرخش یه دکمه باشه که اونو روی همون فایل بدون پرسیدن آدرس!!!! ذخیره کنه!
از filestraem استفاده کردم ارور GDI میداد:ناراحت:

مهرداد صفا
سه شنبه 28 آذر 1391, 21:22 عصر
سلام
لطفا کدی را که استفاده کردید قرار دهید.
در ضمن میتوانید در هنگام باز کردن تصویر آدرس آن را ذخیره کنید تا در هنگام ذخیره کردن، از همان آدرس استفاده کنید.

cerezaei65
چهارشنبه 29 آذر 1391, 08:28 صبح
یکم کد رو تغییر دادم
حالا ارور در حال استفاده از عکس رو میده!!!! در حالی که از فایل استریم استفاده کردم!


FileStream fs = new FileStream(picture_path, FileMode.Open, FileAccess.Read);
Image pic = Image.FromStream(fs);
fs.Close();



min_pic.Image = pic;


min_pic.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff);
byte[] buff = ms.ToArray();
FileStream fs = new FileStream(picture_path, FileMode.Create, FileAccess.Write);
fs.Write(buff, 0, buff.Length);
fs.Close();

group45
چهارشنبه 29 آذر 1391, 09:32 صبح
سلام
اینمیه تابع واسه روتید کردن عکس

public Image RotateImage(Image img)
{
var bmp = new Bitmap(img);
using (Graphics gfx = Graphics.FromImage(bmp))
{ gfx.Clear(Color.White);
gfx.DrawImage(img, 0, 0, img.Width, img.Height);
}
bmp.RotateFlip(RotateFlipType.Rotate270FlipNone);
return bmp;
}

مهرداد صفا
چهارشنبه 29 آذر 1391, 09:52 صبح
سلام
میتوانید فایل را موقتا در یک Stream دیگر یا روی یک MemoryStream ذخیره کرده شی Image یا Bitmap را Dispose کنید تا فایل آزاد شود و سپس از روی Stream موقت روی فایل اصلی بنوسید و مجددا تصویر را لود کنید.
در تاپیک زیر هم روشهای مناسبتری بررسی شده:
حذف فایل استفاده شده در برنامه (http://barnamenevis.org/archive/index.php/t-366194.html)