Если файл был выбран, загружает изображение с помощью TJpegImage.LoadFromFile.
Вычисляет коэффициент масштабирования на основе высоты и ширины оригинального изображения, чтобы resized изображение сохраняло свой аспектный соотношение.
Создает объект TBitmap, используемый для создания миниатюры оригинального изображения.
Миниатюра bitmap создается путем растяжения оригинального изображения с помощью StretchDraw, при этом сохраняется его аспектное соотношение.
Миниатюра затем рисуется на канвасе формы в координатах (100, 10).
Наконец, миниатюра конвертируется обратно в объект TJpegImage и сохраняется как новый файл с расширением "_thumb.JPG".
Код включает в себя обработку ошибок с помощью блоков try-finally для обеспечения того, что выделенная память для bitmap и JPEG-объектов будет правильно освобождена, когда они больше не нужны.
Вот альтернативное решение, использующее класс TBitmapResizer, который предоставляет более простой способ изменения размера изображений при сохранении их аспектного соотношения:
В этом альтернативном решении класс TBitmapResizer используется для создания resized bitmap из оригинального JPEG-изображения. Resize bitmap затем сохраняется как новый файл с расширением "_thumb.JPG". Это подход более компактен и легче для чтения, чем оригинальный код.
В статье описывается процедура изменения размера JPEG-файла и сохранения его в новый файл с помощью Delphi, сохраняя при этом пропорции изображения.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.