PDA

View Full Version : مشکل در ریسایز ، ذخیره و بازیابی عکس در دیتابیس



seven7777777
سه شنبه 05 خرداد 1388, 16:07 عصر
دوستان سلام
من در برنامم از کد زیر برای تولید عکس 3 در 4 استفاده می کنم :


Image origImage = Image.FromFile(filePath);
Image origThumbnail = new Bitmap(85, 113, origImage.PixelFormat);
Graphics oGraphic = Graphics.FromImage(origThumbnail);
oGraphic.CompositingQuality = CompositingQuality.HighQuality;
oGraphic.SmoothingMode = SmoothingMode.HighQuality;
oGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
Rectangle oRectangle = new Rectangle(0, 0, 85, 113);
oGraphic.DrawImage(origImage, oRectangle);
origThumbnail.Save(Application.StartupPath + "/tmpImage.jpg", ImageFormat.Jpeg);
origImage.Dispose();

و از کد زیر برای بدست آوردن byte[] های عکس استفاده می کنم تا بعدا تو دیتابیس ذخیره کنم :


byte[] data = null;
FileInfo fInfo = new FileInfo(sPath);
long numBytes = fInfo.Length;
FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fStream);
data = br.ReadBytes((int)numBytes);
return data;

و از کد زیر برای واکشی عکس از دیتابیس استفاده میکنم :


Image newImage;
MemoryStream ms = new MemoryStream(picbyte, 0, picbyte.Length);
ms.Write(picbyte, 0, picbyte.Length);
newImage = Image.FromStream(ms, true);
return newImage;


و اما مشکلات :
1. نمی دونم چرا بعضی از عکس ها رو نمی تونه 3 در 4 کنه . فکر کنم مشکل در ساخت Bitmap و با PixelFormat باشه .
2. موقع واکشی از دیتابیس بعضی عکس ها رو که به درستی ذخیره شدن نمی تونه بسازه .
3. من عکس 3 در 4 رو موقت یه جا ذخیره می کنم ولی وقتی می خوام حذفش کنم میگه یه برنامه داره باهاش کار می کنه که همین برنامه خودمه . چکار کنم که از دست برنامه خارج بشه ؟

seven7777777
چهارشنبه 06 خرداد 1388, 01:27 صبح
یعنی کسی به این مشکل برخورد نکرده تا حالا ؟!؟!؟!

newgoldenman
چهارشنبه 06 خرداد 1388, 11:20 صبح
سلام. خوب Dispose اش كن هفت عزیز! منظور شیء عكسته!