Вверх ↑
Разработчик
Ответов: 26151
Рейтинг: 2127
#1: 2008-02-21 12:01:29 ЛС | профиль | цитата
-= DriveR =-, особенно не делай упор на применение этой версии, немного будет изменен алгоритм загрузки катинки.

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


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

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

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


Дальнейшие улучшения -- ver 1.30. Реализован основной алгоритм от Galkov'a (загрузка оригинальной картинки и наличие в памяти повернутой)

Результат -- еще более обнадеживающий:



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


Я закончил мучать этот компонент. Последний результат 31 sec [52 msec]. Этот результат удалось добиться рекомендациями Galkov'a по применению массива Dword, но с байтовой адресацией, тк линия байтов в pf32bit длиннее (полный dword -- 4 байта) и не поддерживает 256-цветные рисунки, которые конвертируются в pf24bit (3 байта). Поворот 24-битного рисунка оказался лучше на 2 msec. Быстрее будет работать только ассемблерный код.

Изыскания можно посмотреть на SVN

[svn]Img_Rotate.pas[/svn]
------------ Дoбавленo:

Начну потихоньку делать Img_Shift -- сдвиг изображения по осям на N-пикселей с заполнением пустот подготовленным изображением, применяя ускоренные методы обработки.
карма: 22

0
файлы: 2result_015.jpg [4.4KB] [352], image_rotate_1_30.zip [5.9KB] [213]