hamid_73
شنبه 16 اسفند 1393, 23:42 عصر
با سلام
دوستان من عکس های سنگین که لایه باز هم هستن رو می خوام سایزشون رو کم کنم و به صورت jpeg ذخیره کنم ولی رو بیشتر سیستم ها برناه قفل می کنه و خیلی طول میکشه تا فایل ها رو کم هجم کنه و سایزشون رو کم کنه بعضی مواقع هم out of memory میده
عکس هایی کا باید کم حجم بشن عکس ها بنری هستن وس حجمشون بالا 400 مگابایت هستن
من از این کد استفاده کردم برای این کار
static Image ScaleByPercent(Image imgPhoto, int Percent)
{
//float nPercent = ((float)Percent / 100);
int sourceWidth = imgPhoto.Width;
int sourceHeight = imgPhoto.Height;
int sourceX = 0;
int sourceY = 0;
int destX = 0;
int destY = 0;
int destWidth = (int)(sourceWidth / Percent);
int destHeight = (int)(sourceHeight / Percent);
Bitmap bmPhoto = new Bitmap(destWidth, destHeight, PixelFormat.Format24bppRgb);
bmPhoto.SetResolution(imgPhoto.HorizontalResolutio n, imgPhoto.VerticalResolution);
Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
grPhoto.DrawImage(imgPhoto,
new Rectangle(destX, destY, destWidth, destHeight),
new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight),
GraphicsUnit.Pixel);
grPhoto.Dispose();
return bmPhoto;
}
و اینجوری فراخونیش کردم
var image = Bitmap.FromFile(ofdup.FileName);
var newImage = ScaleByPercent(image, 2);
newImage.Save(Application.StartupPath + "\\Data\\LowerImage\\" + namefile2 + "r.jpg", ImageFormat.Jpeg);
تو سیستم خودم که تو این خط کد
var image = Bitmap.FromFile(ofdup.FileName);
خطای out of memory میده
دوستان من عکس های سنگین که لایه باز هم هستن رو می خوام سایزشون رو کم کنم و به صورت jpeg ذخیره کنم ولی رو بیشتر سیستم ها برناه قفل می کنه و خیلی طول میکشه تا فایل ها رو کم هجم کنه و سایزشون رو کم کنه بعضی مواقع هم out of memory میده
عکس هایی کا باید کم حجم بشن عکس ها بنری هستن وس حجمشون بالا 400 مگابایت هستن
من از این کد استفاده کردم برای این کار
static Image ScaleByPercent(Image imgPhoto, int Percent)
{
//float nPercent = ((float)Percent / 100);
int sourceWidth = imgPhoto.Width;
int sourceHeight = imgPhoto.Height;
int sourceX = 0;
int sourceY = 0;
int destX = 0;
int destY = 0;
int destWidth = (int)(sourceWidth / Percent);
int destHeight = (int)(sourceHeight / Percent);
Bitmap bmPhoto = new Bitmap(destWidth, destHeight, PixelFormat.Format24bppRgb);
bmPhoto.SetResolution(imgPhoto.HorizontalResolutio n, imgPhoto.VerticalResolution);
Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
grPhoto.DrawImage(imgPhoto,
new Rectangle(destX, destY, destWidth, destHeight),
new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight),
GraphicsUnit.Pixel);
grPhoto.Dispose();
return bmPhoto;
}
و اینجوری فراخونیش کردم
var image = Bitmap.FromFile(ofdup.FileName);
var newImage = ScaleByPercent(image, 2);
newImage.Save(Application.StartupPath + "\\Data\\LowerImage\\" + namefile2 + "r.jpg", ImageFormat.Jpeg);
تو سیستم خودم که تو این خط کد
var image = Bitmap.FromFile(ofdup.FileName);
خطای out of memory میده