Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#31: 2008-02-17 10:11:49 ЛС | профиль | цитата
И который из них настоящий
карма: 9

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#32: 2008-02-17 10:33:55 ЛС | профиль | цитата
Galkov, тот, который больше размером. Старый для сравнения удалять не стал.

------------ Дoбавленo:


У меня идея родилась -- добаить сглаживание, но это тормознет обработку пропорционально коэффициенту сглаживания (от 0 до 4). Все таки программное, а не аппаратное сглаживание. Да и памяти сожрет во столько же раз больше.
карма: 22

0
Ответов: 8926
Рейтинг: 823
#33: 2008-02-17 11:22:32 ЛС | профиль | цитата
nesco, ну оооочень хорошо! Молодец!
Сглаживание, конечно, уменьшит накапливание искажений при повороте уже повёрнутой картинки - не стоит овчинка выделки; даёшь скорость!
карма: 19

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#34: 2008-02-17 11:48:46 ЛС | профиль | цитата
Леонид писал(а):
при повороте уже повёрнутой картинки
Опять я скажу -- на кой черт вертеть уже повернутую картинку, когда можно вертеть исходную. А тормоза, действительно, при билинейном сглаживании увеличились в два раза, после скоростного вывода сильно глаза режет, да и выирыша в качестве очень мало. Нужно, минимум, квадральное сглаживание. Вывод -- в болото сглаживание.
карма: 22

1
Голосовали:Валерий
Ответов: 9906
Рейтинг: 351
#35: 2008-02-17 13:07:32 ЛС | профиль | цитата
nesco писал(а):
Нужно, минимум, квадральное сглаживание

Человеческим языком расскажи, пожалуйста
Заодно и про "билинейную"


BTW: Использование сленга заставляет задумываться о том, что некто хочет показаться крутым
Глупо, и по-детски, ИМХО
Настоящая крутость наступает только тогда, когда у тебя ПОЛНОСТЬЮ пропадает потребность кому-то кем-то показываться
карма: 9

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#36: 2008-02-17 15:12:01 ЛС | профиль | цитата
Galkov писал(а):
Глупо, и по-детски
Ну вот, сразу "и по-детски".

Билинейное саживание самое простое -- делается две копии рисунка, но одна смещается по отношению к другой на один пиксель по диагонали, заполнение отсутствующих пикселей происхоит цветом фона (или глубиной альфа-канала). При расчете усредненного цвета пикселя целевой картинки испоьзуется матрица обоих картинок источников, размером 2х2, нечетные -- из первой картинки, четные -- из второй. В квадральной тоже самое, но уже нужно четыре картинки, смещенные по трем диагональным улам, матрица, в данном случе, буде уже 4х4.

------------ Дoбавленo:


Вот последняя версия. Несколько тюнингованная, за счет применения других типов данных и измененного битового копирования; рисунок при кратном повороте (0, 90, 180, 270,360) -- 32-х битный, при повороте -- 24-х битный. Результат -- 39 сек [72 мсек]. Как еще ускорить, и возможно ли это вообще, я уже не знаю.
карма: 22

0
файлы: 1image_rotate_1_25.zip [14.1KB] [219]
Ответов: 9906
Рейтинг: 351
#37: 2008-02-17 15:14:42 ЛС | профиль | цитата
А по моему, так надо:

  • сканировать точки НЕ по исходной картинке, а по результирующей, безо всяких там "дурацих пропусков"
  • если тупо - то просто находить наиболее близкую точку в исходной, и копировать ейные цвета
  • чего-то мне представляется, что копировать один dword - пошустрее должно быть, чем три раза по одному байту
  • вычисления с плавающей арифметикой на самом внутреннем цикле, и сравнение этих вычислений по скорости, этим самым одним mov-ом - занятие для мазахистов
  • если пытаться являть интеллект для "размешивания", то "найденная точка" в исходной картинке - по-всякому лежит между 4-мя настоящими.
    Смешать их цвета в нужных пропорциях, и всего делов, вроде бы.
    Откуда учетверение памяти, какие матрицы - не пойму никак...
  • карма: 9

    0
    Разработчик
    Ответов: 26151
    Рейтинг: 2127
    #38: 2008-02-17 15:42:58 ЛС | профиль | цитата
    Помог бы откорректировать, особенно первые четыре пункта.
    карма: 22

    0
    Ответов: 5227
    Рейтинг: 587
    #39: 2008-02-17 17:28:42 ЛС | профиль | цитата
    nesco - просто хочу СПАСИБО! , давно была необходимость в этом компоненте, есть некоторые задумки, хочу попробовать...
    карма: 4
    Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
    0
    Ответов: 9906
    Рейтинг: 351
    #40: 2008-02-17 17:43:51 ЛС | профиль | цитата
    Да по-моему, после такого:
    nesco писал(а):
    Честно говоря, я не ожидал такого результата -- при большом экране она дольше выводится, чем поворачивае
    - надо идеологию менять
    И с этого начинать...

    У элемента у нутре должно быть две картинки одинакового размера: оригинал, и "повернутая"
    Первая может быть св-м, может грузиться методом типа doLoad, не важно, главное, что в процессе работы НИКАКИХ операций с динамической памятью не производить

    Один раз загрузил оригинал (создались две картинки)
    Тьму раз сказал doRotate: происходит ТОЛЬКО рисование первой, неким хитрым (с размешиванием, или без...) макаром на второй
    Вторая картинка может быть на нижней точке: кому надо, тот отрисует (тоже, между прочим, обыкновенный BitBlt безо всякой динамики, условно) этот результат там где ему приспичит: с прозрачностью там, или без...

    Собственно -- и все...
    Это база, с нее логично начинать, а потом уже прилизывать коды, сколько твоей душеньке угодно...
    Вплоть до "размешивания с копированием" на asm-е...
    Тоже ведь ничего военного...

    карма: 9

    0
    Разработчик
    Ответов: 26151
    Рейтинг: 2127
    #41: 2008-02-17 18:08:27 ЛС | профиль | цитата
    Galkov, я одного понять не могу -- валялся компонент несколько лет в аплоаде, никому нафиг не надо было его переделывать. Только я взялся его немного довести рабочего состояния, как тут же пояаились кучи идей -- как надо и как не надо. Была поставлена задача Леонидом, добиться скорости похожей на Фотошоп, я ее достиг. Хочешь довести до ума, доводи -- я больше, ничего не хочу, тк как нет предела совершенства.
    карма: 22

    1
    Голосовали:Эдик
    Ответов: 9906
    Рейтинг: 351
    #42: 2008-02-17 18:13:43 ЛС | профиль | цитата
    Чего там непонятного

    Если не делать, значит другие проблемы есть
    Если делать, значит делать хорошо сразу
    Потому-что делать его пять раз - опять же и другие проблемы тоже есть
    карма: 9

    0
    Ответов: 8926
    Рейтинг: 823
    #43: 2008-02-17 18:26:35 ЛС | профиль | цитата
    nesco, задачу поставил -=Driver=-, я пытался помочь, но не смог
    Galkov, хорошо сразу редко получается, чаще "как всегда"
    карма: 19

    0
    Разработчик
    Ответов: 26151
    Рейтинг: 2127
    #44: 2008-02-17 20:51:48 ЛС | профиль | цитата
    Леонид писал(а):
    задачу поставил -=Driver=-
    Насчет скорости задачу поставил не -=Driver=-, сначала была просьба довести до рабочего состояния в новых версиях, а уже потом, появилась задача его ускорить.
    А насчет двух картинок, то я не согласен. Возможно, что оригинал и надо держать загруженным, но вот фоновую картинку-то зачем?
    В компоненте, полученная картинка выводится наружу, зачем ее еще и отрисовывать на чем-то. А если мне нужна сама картинка, а не ее отрисовка, что тогда? Откуда взялось такое мнение, что графические компоненты непременно должны что-то отрисовывать на экране?
    карма: 22

    0
    Ответов: 817
    Рейтинг: 52
    #45: 2008-02-17 21:56:54 ЛС | профиль | цитата
    nesco,

    Огроменное СПАСИБО !
    nescoimage_rotate_1_25 Это что надо, работает быстро и качественно
    Повороты поградусно мне не нужны, поэтому я доволен на 100%
    СПАСИБО
    карма: 1

    0
    Сообщение
    ...
    Прикрепленные файлы
    (файлы не залиты)