Я разрабатываю сервис, в котором пользователи могут загружать изображения и сохранять их в библиотеке. Я хочу сохранить исходный файл (чтобы люди могли загружать изображения с высоким разрешением), а также сделать копию изображения для использования в качестве эскиза.
Проблема, с которой я столкнулся, заключается в том, что миниатюра «весит» намного больше, чем исходный файл, пропорционально. Когда я проверяю основные свойства каждого файла (в XnView), я вижу, что исходные файлы, например, сохраняются с 32 битами на плоскость, тогда как исходный файл будет иметь, например, только 24 бит на плоскость.
Каков будет правильный способ сделать копию исходного файла, все еще используя сжатие? Это выдержка из кода:
private void ResizeImage(string originalFile, string NewFile, int NewWidth, int MaxHeight, bool OnlyResizeIfWider, string directory)
{
System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(originalFile);
// Prevent using images internal thumbnail
FullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
FullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
if (OnlyResizeIfWider)
{
if (FullsizeImage.Width <= NewWidth)
{
NewWidth = FullsizeImage.Width;
}
}
int NewHeight = FullsizeImage.Height * NewWidth / FullsizeImage.Width;
if (NewHeight > MaxHeight)
{
// Resize with height instead
NewWidth = FullsizeImage.Width * MaxHeight / FullsizeImage.Height;
NewHeight = MaxHeight;
}
System.Drawing.Image NewImage = FullsizeImage.GetThumbnailImage(NewWidth, NewHeight, null, IntPtr.Zero);
// Clear handle to original file so that we can overwrite it if necessary
FullsizeImage.Dispose();
// Save resized picture
NewImage.Save(directory + Path.DirectorySeparatorChar + NewFile);
}