Примеры Delphi и C# из жизни

Примеры программирования на языках Delphi, C#

 




apartment in moscow; Лизинг автомобилей, Лизинг авто Acura инфо - Moscow; . Трудоустройство за рубежом. (Работа киев) вакансии.; Можем быстро создать сайт, корпоративный сайт компании.; железные тамбурные двери

Создание эскиза (thumbnail) с помощью GDI+ в Delphi | Delphi

Для генерации уменьшенной копии изображения - эскиза (thumbnail) используется метод GetThumbnailImage класса TGPImage. Однако, необходимо учитывать некоторые ограничения.

Эскизы поддерживаются некоторыми форматами изображений, такими как JPEG и TIFF. Зачастую они используются при сохранении цифровых изображений фотокамерами для отображения уменьшенной копии изображения на экране фотокамеры.

Метод GetThumbnailImage позволяет извлекать встроенный в изображение эскиз и масштабировать его в указанные размеры, а при его отсутствии - создать уменьшенную копию всего изображения.

Но алгоритмы, используемые при преобразовании, не могут дать приемлемого качества уже при размере эскиза 300х300 пискселей и выше (так говорит сама Microsoft).

Таким образом, для создания качественного эскиза, необходимо использовать масштабирование всего изображения.

var
 original_imageg, thumbnail_imageg: TGPImage;
 g: TGPGraphics;
 tmb_width, tmb_height: Integer;
 encoderClsid: TGUID;
begin
 tmb_width := 100; // ширина эскиза
 tmb_height := 100; // высота эскиза
 original_imageg := TGPImage.Create('c:\Cat.bmp'); // оригинальное изображение
 thumbnail_imageg := TGPBitmap.Create(tmb_width, tmb_height); // будущий эскиз
 g := TGPGraphics.Create(thumbnail_imageg); // полотно для рисования
 g.SetInterpolationMode(InterpolationModeHighQualityBilinear); // алгоритм интерполяции
 g.DrawImage(original_imageg, MakeRect(0, 0, tmb_width, tmb_height), 0, 0, original_imageg.GetWidth, original_imageg.GetWidth, UnitPixel);
 g.Destroy;
 GetEncoderClsid('image/jpeg', encoderClsid);
 thumbnail_imageg.Save('c:\newcat.jpg', encoderClsid); // сохраняем
end;