
نوشته شده توسط
HRC123
باسلام و عرض شرمندگی
الان باید چه کار کنم که حجم عکسا بیاد پایین که حجم دیتابیس نره خیلی بالا؟
اگه تنوع رنگی و جزئیات کم باشه PNG خوب جواب میده وگرنه فشرده سازی درصدی JPEG رو امتحان کنید، 100 درصد بهترین کیفیت با کمترین فشرده سازی و بیشترین حجم داده رو داره.
هر چقدر درصد پایینتر باشه فشرده سازی افزایش پیدا می کنه اما در عوض کیفیت تصویر هم پایین میاد.
البته JPEG دیگه زمینه شفاف رو مثل PNG پشتیبانی نمی کنه و اگر زمینه تصویر شفاف بود در خروجی مشکی میشه.
using System.Drawing.Imaging;
public static byte[] ImageToByte(Image photo, int qualityPercent)
{
ImageCodecInfo jpgEncoder = null;
foreach (var codec in ImageCodecInfo. GetImageEncoders())
{
if (codec.FormatID == ImageFormat.Jpeg. Guid)
{
jpgEncoder = codec;
break;
}
}
if (jpgEncoder == null)
{
throw new InvalidOperationException();
}
var parameters = new EncoderParameters(1);
parameters.Param [0] = new EncoderParameter( Encoder.Quality, qualityPercent);
using (var stream = new System.IO. MemoryStream())
{
photo.Save(stream, jpgEncoder, parameters);
return stream.ToArray();
}
}
مثلا با کیفیت 50 درصد :
command.Parameters. AddWithValue ("@user_img", ImageToByte (bmp_image, 50));
با کیفیت 85 درصد :
command.Parameters. AddWithValue ("@user_img", ImageToByte (bmp_image, 85));