![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 13 Всего: 63 |
Есть картинка 1280х960 в image1 (да любая по сути, но большая), есть код:
По нажатию кнопки получаем на форма рисунок, НО он очёнь сильно искажён, особенно цвета. Как сделать так, чтобы не было искажений? Если копиовать с масштабом >1, то всё просто замечательно, но при уменьшении получается бяка... Или дайте кто аналог Canvas.StretchDraw, копирующий не всё изображения, а его TRect(x,y,x1,y1)... -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 1 Всего: 115 |
Illusion Dolphin
Ну тут всё правильно, тоесть 100x100 должна быть бяка, а 128х96 будет самое оно. Я хочу сказать что Высоту и ширину нужно делить на одно и тоже число если хочешь получить оптимум. |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 13 Всего: 63 |
Э, нееее... 100 на 100 я выбрал так, наобум для иллюстрации факта. Не дело в том, что пропорции нарушаются, цвет сам нарушается. У меня в проекте выводится всё пропорционально, но при зуме меньше 1 получается не то... По сути stretchdraw должен аналогично работать, но он работает корректро в такой ситуайии 9вся проблема в нём то, чтог нельзя выбрать какой именно рекс он будет выводить). Мне теперь уже интересно это только из любопытства (я уже сам написал функцию для коэффициента передачи меньше единицы).\ почему же эта функция некорректно цвета выводит...
-------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
Поставь перед CopyRect такую строчку:
Добавлено @ 11:29 Или STRETCH_HALFTONE для сглаживания... -------------------- С уважением, г-н Посол. |
|||
|
||||
imageman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.9.2004 Репутация: нет Всего: 1 |
видимо уменьшение идет Nearest. При небольших уменьшениях и при уменьшении картинки с малым числом мелких деталей все должно быть нормально. Проблемы, видимо, начинаются на мелких деталях (типа мелкой клетки)? Есть разные способы избежать проблем с цветопередачей.
Самый странный способ (на первый взгляд) перед масштабированием размыть картинку (Blur). Чем сильнее уменьшение, тем сильнее Blur. Попробуй. А вообще - есть пакет G32 (бесплатный). Там масштабирование хорошо выполнено. |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
Нет, дело не в Nearest. Если бы было так, то Illusion Dolphin и жаловаться не стал бы. Строка STRETCH_DELETESCANS как-раз таки и делает масштабирование, по качеству схожее с выбором ближайшей точки (Nearest). Без этой строки цвета складываются то ли с помощью OR, то ли с помощью AND (проверить надо) - что, конечно же, в результате даёт искажения...
-------------------- С уважением, г-н Посол. |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 13 Всего: 63 |
Точно... С этим тот код работает 8). Думал уже повсюду поставить, но нашёлся ещё один глюк 8). Теперь опять же из любопытства (всё равно я все эти функции пеерписал на свой лад) - если я использую флаг STRETCH_HALFTONE, то сглаживание (коряво, но факт) происходит, однако при зуме около 15-16 происходит переключение на вывод как при STRETCH_DELETESCANS - т.е. сглаживание отключается... Почему это может быть? Или стндартное сглаживание при больших коэффициентах просто не работает по задумке microsoft? imageman: не, всё немного не так... Делать ещё и размытие - это уже черезчур... Я же говорю, что я знаю, как сделать всё красиво, но так получается, естественно, медленнеею Так у меня в проге есть галочка типа "использовать качественную прорисовку" , и теперь я делаю "некачественную" (когда галочка отключена), пытаясь использовать стандартные подходы. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
У меня сглаживание отключается при увеличении более чем в 4 раза...
![]() Почему - не понял, и в MSDN не сказано нислова про какие-нибудь ограничения StretchBlt... -------------------- С уважением, г-н Посол. |
|||
|
||||
imageman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.9.2004 Репутация: нет Всего: 1 |
Для проверки кода уменьшение (увеличение - разговор отдельный) сделайте в любом редакторе шахматную доску (в мелкую клетку) и сделайте перспективное искажение.
Сделайте уменьшение средствами фотошапа (например) и вашими средствами. У меня ни STRETCH_DELETESCANS, ни STRETCH_HALFTONE не давал даже приемлимого результата (почти наверняка nearest технология применяется). Зато, как подозреваю, быстро :-) |
|||
|
||||
Illusion Dolphin |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 13 Всего: 63 |
С уменьшением уже разобрались, это пройденный этап, интересно теперь узнать про глюк с увеличением...
Конечно, но это, собственно и пишется... -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||
|
|||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
Кстати, через API нормально масштабируетс при любом увеличении...
Потом выложу пример... -------------------- С уважением, г-н Посол. |
|||
|
||||
imageman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.9.2004 Репутация: нет Всего: 1 |
p0s0l, так и не выложил
![]() |
|||
|
||||
Date |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 22.3.2006 Где: Алматы Репутация: нет Всего: 3 |
А вот такой вопрос (думаю будет уместен здесь).. как бы сделать так что б при открытии изображения рисунок сразу становился по размеру Timage. а потом по необходимости (например по нажатию клавиши) становился принемал истенный размер.
Дело даже не в примере а в алгоритме.. --------------------
Люди не будьте свиньями, Бросайте мусор в урны. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 18 Всего: 484 |
При открытии AutoSize := false; Stretch := true;
А далее наоборот - Stretch := false; AutoSize := true; |
|||
|
||||
Date |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 22.3.2006 Где: Алматы Репутация: нет Всего: 3 |
Большое Спасибо...
очь выручили. --------------------
Люди не будьте свиньями, Бросайте мусор в урны. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |