У меня есть операция на сайте, которая обрывает изображение, однако получившееся обрезанное изображение выходит значительно больше с точки зрения размера файла (оригинал - 24k, а обрезанное изображение - как 650k). Поэтому я обнаружил, что мне нужно применить некоторое сжатие к изображению, прежде чем сохранять его. Я придумал следующее:Сжатие изображения не работает
public static System.Drawing.Image CropImage(System.Drawing.Image image, Rectangle cropRectangle, ImageFormat format)
{
var croppedImage = new Bitmap(cropRectangle.Width, cropRectangle.Height);
using (var g = Graphics.FromImage(croppedImage))
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(
image,
new Rectangle(new Point(0,0), new Size(cropRectangle.Width, cropRectangle.Height)),
cropRectangle,
GraphicsUnit.Pixel);
return CompressImage(croppedImage, format);
}
}
public static System.Drawing.Image CompressImage(System.Drawing.Image image, ImageFormat imageFormat)
{
var bmp = new Bitmap(image);
var codecInfo = EncoderFactory.GetEncoderInfo(imageFormat);
var encoder = System.Drawing.Imaging.Encoder.Quality;
var parameters = new EncoderParameters(1);
var parameter = new EncoderParameter(encoder, 10L);
parameters.Param[0] = parameter;
using (var ms = new MemoryStream())
{
bmp.Save(ms, codecInfo, parameters);
var resultImage = System.Drawing.Image.FromStream(ms);
return resultImage;
}
}
Я установил качество низко, чтобы увидеть, не было никаких изменений вообще. Нет. Урожай сохраняется правильно, но сжатие - это не радость. Если я вообще обойду CompressImage(), ни размер файла, ни качество изображения не будут отличаться.
Итак, 2 вопроса. Почему ничего не происходит? Есть ли более простой способ сжать результирующее изображение на «веб-оптимизацию», подобно тому, как фотошоп сохраняет веб-изображения (я думал, что он просто лишил много информации об этом, чтобы уменьшить размер).
Какой образ вы читаете в и экономии? BMP сжимается с трудом. PNG или JPG сжимаются намного лучше. Я могу легко визуализировать giong от 24k PNG до 650k BMP. –
Я читаю в png/jpg. Растровое изображение - это просто промежуточный объект. – Sinaesthetic
Проблема заключается не в том, что вы читаете ... это то, что вы сохраняете. Plaese проверяет правильные настройки для condecInfo и объекта paramets ... Возможно, вы сохраняете изображение с более высоким качеством, чем оригинал ... – HiperiX