PDA

View Full Version : سوال: سوال: چطور فایل هایی رو که در برنامه باز هستند رو ازاد کنم؟



rahdar
یک شنبه 13 فروردین 1391, 14:43 عصر
سلام خدمت اساتید گرامی
من تو برنامه ام یه picturebox دارم که با دستور زیر یه عکس رو درش باز کرذم

pictureBox1.Image = Image.FromFile(fileNeme);
حالا می خوام فایل این عکس را با FileMove منتقل کنم
اما خطای هنگام اجرا میده که فایل توسط برنامه بازه و امکان انتقال نداره.
حتی اگه عکس رو عوض کنم هم تمام عکسهایی که قبلا در picturebox نمایش داده شدند کماکان توسط برنامه باز هستند و نمیشه منتقلشون کنم. مگر اینکه برنامه رو ببندم.
راهی است که این هندل به فایل رو از بین برد یا دورش زد
به فکرم رسید که فایل رو در یک فایل باز کنم بعد بدم به PB و فایل رو ببندم که موفق نشدم
ممنون میشم کسی کمک کنه

vof.ir
یک شنبه 13 فروردین 1391, 15:33 عصر
دوست عزیز می توانید از طریق کلاس Image فایل را به درون یک استریم بخوانید، و سپس یک آبجکت از نوع Image داشته باشید، پس از این نمونه سازی از کلاس Image فایل را ببندید، حال شما تصویر را داخل رم قرار دادید
مشکل حل می شود

به این کدها دقت کنید

public static byte[] GetByteFromFile(string filepath)
{
byte[] filrebytes = null;
if (File.Exists(filepath))
{
FileInfo fileinfo = new FileInfo(filepath);
long filelength = fileinfo.Length;
FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read);
filrebytes = new byte[Convert.ToInt32(filelength)];
int iBytesRead = fs.Read(filrebytes, 0, Convert.ToInt32(filelength));
fs.Close();
}
return filrebytes;
}

public static Image GetImage(byte[] imagebytes)
{
Image img = null;
if (imagebytes != null)
{
MemoryStream mstream = new MemoryStream(imagebytes);
img = Image.FromStream(mstream);
}
return img;
}

rahdar
یک شنبه 13 فروردین 1391, 15:45 عصر
بسیار ممنون از راهنمایی شما
این کار رو میخواستم برای نوشتن یه برنامه مرتب سازی عکس که عکس های شلوغ و درهم داخل یه پوشه رو با فشردن فقط یک دکمه منتقل کنه به پوشه ازقبل تعیین شده ( امان از تنبلی)
کمک خیلی زیادی هست برای دسته بندی عکسها
کاری که قبلا تو سه ساعت انجام میدادم الان در 15 دقیقه انجام میدم.
کاملش کردم میزارم دوستان استفاده کنند. هم از کدش و هم از خودش
قبل از این کمک شما من به جای اینکه فایل عکس رو منتقل کنم مقصد و مبدا فایل رو در یک فایل متنی می نوشتم بعد از اینکه کارم با برنامه تموم شد یه فایل داشتم که لیست فایلهایی رو که باید منتقل میشدند رو داخلش داشتم.
بعد با یه برنامه مجزا این فایل رو می خوندم و عکس ها رو منتقل می کردم
استراتزی اخراج از در ورود از پنجره

aghayex
یک شنبه 13 فروردین 1391, 15:46 عصر
OpenFileDialog dlg = new OpenFileDialog();


if (dlg.ShowDialog() == DialogResult.OK)
{
Image im=new Bitmap(dlg.FileName);

PictureBox PictureBox1 = new PictureBox();
PictureBox1.Image = im ;
im.Dispose();
}

dlg.Dispose();