![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| 14SatanA88 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 13.5.2010 Репутация: нет Всего: 5 |
Здравствуйте, программеры.
Появилась необходимость программно в пакетном режиме произвести ресайз jpg-изображений. При этом столкнулся с проблемой потери качества при обработке картинки. Причем пользовался расхваленной процедурой SmoothResize, к тому же выставлял свойство quality в 100. Результат никак не устраивает. Код процедуры:
Для сравнения: Исходная картинка: ![]() Ресайз через AcdSee (это желаемый результат): ![]() Ресайз через SmoothResize (то, что поучается у меня): ![]() Предвещая Ваши вопросы, скажу: 1. Поиском пользовался. Все похожие темы устарели, в итоге предлагают SmoothResize. 2. Пробовал разные параметры. Итог не радует. Помогите решить проблему. Хочу программного ресайза с результатом хотя бы близким к тому, что получается при использовании AcdSee. Заранее благодарю. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
А если сохранять как битмап? Чтобы удостовериться что проблема не в jpeg-e. Все таки jpeg 100 это тоже с потерями. На счет алгоритмов. Помню что правильное уменьшение делают следующим образом. Сначала делают кратное уменьшение в 2/4/8/16... раз. Кратность выбирают так чтобы размер полученной картинки был меньше либо равен необходимому. Далее делают увеличение до необходимого размера (билинейное/бикубическое). -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| 14SatanA88 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 13.5.2010 Репутация: нет Всего: 5 |
Ненене, нужно обязательно в jpg полученные картинки сохранять.
А есть код, примеры, etc. ? Очень нужно. Особенно интересует билинейное и бикубическое увеличение. Параллельно сам поищу, конечно, но неизвестно, найду ли... |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Не об этом же речь, сохранить чтобы проверить не является ли искажения результатом работы некачественного кодировщика jpeg. Да полно. Можно еще попробовать сделать ту же операцию при помощи GDI+. Там уже реализован бикубик и свой Jpeg декодер/енкодер. Качество может оказаться приемлемым. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Vampyre Imaging Library
Умеет быстро и качественно работать с разными форматами. Умеет ресайзить, крутить, поворачивать. Бесплатная, чистый паскаль, cross-platform, FPC, delphi.32, delphi.net. В демах есть пример конвертора изо-всего во всё. |
|||
|
||||
| 14SatanA88 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 13.5.2010 Репутация: нет Всего: 5 |
Snowy, спасибо, посмотрю.
не в этом дело. сама процедура так плохо ресайзит. пробовал и jpg, и bmp. |
|||
|
||||
| 14SatanA88 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 13.5.2010 Репутация: нет Всего: 5 |
Snowy, не могу установить Vampyre Imaging Library
Если ты устанавливал, помоги, а то я еще долго буду разбираться. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Её не нужно ставить. Это не компонент.
Просто пропиши в путях к либам путь к папке Source. Как юзать - смотри в демках VampConvert.dpr Там всё, что тебе нужно и даже больше. |
|||
|
||||
| 14SatanA88 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 13.5.2010 Репутация: нет Всего: 5 |
Snowy, пути делфе указал. при запуске VampConvert появляется консоль и через секунду закрывается.
Именно то, что мне нужно, нашел при втыкании LCLImager.exe Исходники к этой штуке написаны на Lazarus. Как мне открыть проект в Delphi 7? Или, чтобы было еще проще, объясни мне, идиоту, как вытащить себе в проект функцию бикубического либо билинейного ресайза, чтобы она работала. Буду очень признателен. Кстати, пробовал открывать другие проекты, но они не компилятся. Ссылаются на отсутствие файла sdl.dcu, которого в папке с Vampyre Imaging Library нет... А вот, нашел в коде функцию ресайза Imaging.ResizeImage() Теперь осталось понять, что в нее запихать, чтобы она работала... Это сообщение отредактировал(а) 14SatanA88 - 26.10.2010, 11:43 |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Чтобы собрать демы, есть в батники в папке Scripts
BuildDemosDelphi.bat скомпилит все демы. VampConvert так и должен делать. Это ж утилита коммандной строки. Запусти его из консоли. Там параметры коммандной строки задавать нужно. Или просто код смотри - справка там в явном виде через WriteLn нарисована. Ресайзить просто - Imaging.ResizeImage(список_имаджей, новая_ширина, новая_высота, rfBicubic); Подробнее всё в том же VampConvert. |
|||
|
||||
| 14SatanA88 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 13.5.2010 Репутация: нет Всего: 5 |
Да, я уже понял, нашел. Только вот один вопрос остался - как вогнать картинку в первый параметр? Подробней, шаг за шагом, если можно
Пробовал вот так, что-то не ресайзит. Картинка остается как и была. По атрибутам тоже не видно, что ее трогали (время не меняется). Это сообщение отредактировал(а) 14SatanA88 - 26.10.2010, 12:02 |
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Ты сохранить забыл. Отресайзил, но в памяти.
Вот накидал пример.
|
|||
|
||||
| 14SatanA88 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 13.5.2010 Репутация: нет Всего: 5 |
Огромное спасибо, Snowy, вопрос решен полностью.
Только вот скажи еще, если ты знаешь, в чем разница между билинейным и бикубическим ресайзом? |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
Бикубическая интерполяция
Добавлено через 1 минуту Грубо говоря, билинейная быстрее, бикубическая качественнее. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Билинейная интерполяция использует линейную функцию для аппроксимации промежуточных цветов. И использует только ближайшие 4 пикселя. Бикубик использует кубический сплайн и 16 точек для аппроксимации промежуточных значений. Это медленнее, но качество получается лучше. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |