PDA

View Full Version : سوال: یک عکس را چگونه می توان با کد نویسی حجمش را کم کنیم



samsami
سه شنبه 02 اسفند 1390, 18:42 عصر
با سلام
من یک عکس از صفحه دسکتاپ می گیرم بعد می خوام همین عکس با حجم کم ذخیره بشه
باید چیکار کنم

ممنون میشم از پاسختون

mrbm_2007
سه شنبه 02 اسفند 1390, 19:06 عصر
از فرمت jpg استفاده کنی حجمش کمتر میشه
همچنین اگر ابعادش رو کوچکتر کنی (scale)
کاهش کیفیتش برات مهم هست یا نه؟

samsami
سه شنبه 02 اسفند 1390, 20:28 عصر
خودم دارم jpg استفاده می کنم
ولی می خوام خیلی کمتر بشه

یعنی زیر 10 کیلو بایت می خوام فقط بد کیفت بشه اوکی

mrbm_2007
سه شنبه 02 اسفند 1390, 20:36 عصر
فکر کنم این دقیقا چیزیه که می خوای
// Please do not remove :)
// Written by Kourosh Derakshan
//

//add this!
using System.Drawing.Imaging;

/// <summary>
/// Saves an image as a jpeg image, with the given quality
/// </summary>
/// <param name="path">Path to which the image would be saved.</param>
// <param name="quality">An integer from 0 to 100, with 100 being the
/// highest quality</param>
public static void SaveJpeg (string path, Image img, int quality)
{
if (quality<0 || quality>100)
throw new ArgumentOutOfRangeException("quality must be between 0 and 100.");


// Encoder parameter for image quality
EncoderParameter qualityParam =
new EncoderParameter (Encoder.Quality, quality);
// Jpeg image codec
ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");

EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;

img.Save (path, jpegCodec, encoderParams);
}

/// <summary>
/// Returns the image codec with the given mime type
/// </summary>
private static ImageCodecInfo GetEncoderInfo(string mimeType)
{
// Get image codecs for all image formats
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();

// Find the correct image codec
for(int i=0; i<codecs.Length; i++)
if(codecs[i].MimeType == mimeType)
return codecs[i];
return null;
}

Image myImage = //... load the image somehow
// Save the image with a quality of 50%
SaveJpeg (destImagePath, myImage, 50);

مرجع:
http://www.vbforums.com/showthread.php?p=2038463

samsami
سه شنبه 02 اسفند 1390, 20:41 عصر
نمی دونم چی نوشتی خیلی سخت نوشتی

می خوام یک عکس از هارد بخونه بعد کوچیک کنه و دوباره یه جای دیگه ذخیره کنه

mrbm_2007
سه شنبه 02 اسفند 1390, 20:46 عصر
نمی دونم چی نوشتی خیلی سخت نوشتی

می خوام یک عکس از هارد بخونه بعد کوچیک کنه و دوباره یه جای دیگه ذخیره کنه

اینو من ننوشتم (مرجعش رو ذکر کردم)
خیلی راحته که یه تابع با اسم SaveJpeg تعریف شده که قراره شما از این تابع استفاده کنی
پارامترهای ورودیش هم مشخصه، اول فایل مقصد، بعد ایمیجی که قراره ذخیره بشه، و در نهایت کیفت از 0 تا 100%

mrbm_2007
سه شنبه 02 اسفند 1390, 20:50 عصر
اگر لود کردن عکس رو از فایل می خوای هم اینجوری

Image newImage = Image.FromFile("SampImag.jpg");