Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Оптимизация качества масштабирования изображений в Delphi 10.4.2

Delphi , Графика и Игры , Изображения

Качественное масштабирование изображений является важной задачей при разработке программного обеспечения, особенно когда необходимо сохранить детализацию и цвета исходного изображения. В среде разработки Delphi 10.4.2 существует несколько подходов к решению этой задачи, и важно выбрать тот, который не будет требовать внешних библиотек.

Проблема

Разработчики часто сталкиваются с необходимостью масштабирования изображений без потери качества, при этом предпочтение отдается использованию встроенных возможностей среды разработки. В частности, в вопросе, приведенном ниже, пользователь ищет способ масштабирования изображений, который не будет требовать внешних библиотек и сохранит качество изображения.

Пример кода, который не удался

В коде, предоставленном пользователем, были попытки масштабирования изображений с использованием методов StretchDraw и ScaleImage, но результаты оказались неудовлетворительными: изображение теряло качество или вовсе не отображалось.

{$REGION '1st test'}
LBitmap.Canvas.StretchDraw(
  Rect(0, 0, LNewWidth, LNewHeight),
  LImageIn);                             // -> poor quality
LBitmap.SetSize(LNewWidth, LNewHeight);
// ...

{$REGION '2nd test'}
GraphUtil.ScaleImage(LBitmap, LResized, (LNewWidth/LOldWidth));  // -> empty image
LResized.SetSize(LNewWidth, LNewHeight);
// ...

Подходы к решению

  1. Использование метода ScaleImage с корректными параметрами

    В ответе, предоставленном пользователем, был предложен метод, который включает использование объекта IWICBitmapScaler для масштабирования изображения с высоким качеством. Этот метод позволяет добиться хорошего результата без использования внешних библиотек.

    pascal procedure ResizeBitmap(const Bitmap: TBitmap; const NewWidth, NewHeight: integer); var Factory: IWICImagingFactory; Scaler: IWICBitmapScaler; Source : TWICImage; begin Source := TWICImage.Create; try Factory := TWICImage.ImagingFactory; Source.Assign(Bitmap); Factory.CreateBitmapScaler(Scaler); Scaler.Initialize(Source.Handle, NewWidth, NewHeight, WICBitmapInterpolationModeHighQualityCubic); Source.Handle := IWICBitmap(Scaler); Bitmap.Assign(Source); Scaler := nil; Factory := nil; finally Source.Free; end; end;

  2. Использование метода CreateScaledCopy

    Альтернативный подход включает использование метода CreateScaledCopy, который также позволяет масштабировать изображение с высоким качеством.

    pascal procedure ResizeBitmap(const Bitmap: TBitmap; const NewWidth, NewHeight: integer); Var vImage,v2: TWICImage; begin vImage := TWICImage.Create; try vImage.Assign(Bitmap); v2 := vImage.CreateScaledCopy(NewWidth, NewHeight, wipmHighQualityCubic); Bitmap.Assign(v2); finally v2.Free; vImage.Free; end; end;

Заключение

Для качественного масштабирования изображений в Delphi 10.4.2 можно использовать встроенные методы, такие как IWICBitmapScaler и CreateScaledCopy, которые позволяют сохранить детализацию и цвета изображения. Эти методы не требуют внешних библиотек и могут быть интегрированы непосредственно в код проекта, использующего Object Pascal.

Создано по материалам из источника по ссылке.

Необходимо оптимизировать процесс масштабирования изображений в Delphi 10.4.2 с высоким качеством, используя только встроенные средства и избегая потери качества и деталей изображения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Изображения ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:49:32/0.0055301189422607/1