Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=8218007&src=arc&showlite=l
Дата изменения: Unknown
Дата индексирования: Tue Feb 26 22:21:19 2013
Кодировка: Windows-1251
[delphi] Повернуть TImage на 90њ - Public forum of MSU united student networks
Technical >> Development (Archive)

Страницы: 1 | (4)
Kai : Re: [delphi] Повернуть TImage на 90њ  [re:dtbeaver]   30.12.2008 22:48    | Reply | Edit |
-1
Сдается мне, что твоя функция корректно работает только при 90 градусах.

Zoobastik   [re:YonBrover]   31.12.2008 00:02    | Reply | Edit |
0
Взято с DRKB. Раньше был сайт drkb.ru, ща он сдох - так что качай на торрентс.ру.
[Тут был код, похожий на приведенный выше]



Редактировал Zoobastik (31.12.2008 00:04)
dtbeaver   [re:Kai]   31.12.2008 01:49    | Reply | Edit |
3
я не сказал что нужно использовать эту функцию а написал код содержащий все 3 необходимых варианта. для простоты один из вариантов законстантен в коде. человек
минимально знакомый с паскалем легко сделает все что ему нужно на основе приведенного текста.

Lexus_   [re:dtbeaver]   31.12.2008 13:07    | Reply | Edit |
2
обойтись кстати можно буфером в одну переменную типа TCOlor
а для увеличения скорости еще заюзать ScanLine

dtbeaver   [re:Lexus_]   31.12.2008 16:09    | Reply | Edit |
0
если в исходный Image записана jpg картинка то нет доступа даже к Pixels. поэтому я и создал 2 Bitmap в которые копируется исходная картинка и результат. можно конечно идти и по сканлайнам, но для этого уже придется включать мозг. для разовой обработки картинки годятся и Pixels, всякая оптимизация нужна если необходимо делать что-то скажем 25 раз в секунду для потока картинок.

Zruty   [re:dtbeaver]   03.01.2009 19:21    | Reply | Edit |
0
Мне кажется, что если мы освобождаем объекты в finally, то создавать их надо не внутри try-блока, а снаружи. Тогда даже если первый TBitmap.Create слетит с Exception-ом, не будет делаться попытка b2.Free.

Поправьте, если я ошибаюсь.

Zruty   [re:dtbeaver]   03.01.2009 19:23    | Reply | Edit |
0
Я писал когда-то алгоритм какого-то пиксельного фильтра: над каждым пикселем делалось константное число операций - порядка 5 умножений. На моем тогдашнем Celeron 500 большие картинки обрабатывались недопостимо медленно - пришлось делать через ScanLine.

DarkGray   [re:Zruty]   03.01.2009 19:51    | Reply | Edit |
0
Quote:

Мне кажется, что если мы освобождаем объекты в finally, то создавать их надо не внутри try-блока, а снаружи.




да, правильнее снаружи, и на каждое создание отдельный try

можно еще внутри блока finally проверять на null-и

ayvango   [re:DarkGray]   03.01.2009 21:08    | Reply | Edit |
0
Quote:

можно еще внутри блока finally проверять на null-и



а разве free не делает это само?

Rad   [re:ayvango]   03.01.2009 21:51    | Reply | Edit |
0
В ответ на:


а разве free не делает это само?


делает, но для этого его нужно обнулить перед try-finally блоком :smirk: :p

dtbeaver   [re:Zruty]   03.01.2009 23:47    | Reply | Edit |
0
b2.Free проверяет выделена ли память. можно даже сделать b2:=nil; b2.Free; и исключения не будет

dtbeaver   [re:Rad]   03.01.2009 23:48    | Reply | Edit |
0
да, действительно, стоило сделать присваивания nil. заломало просто.

upd. исправил чтоб не резало глаз особо придирчивым



Редактировал dtbeaver (03.01.2009 23:54)
dtbeaver   [re:Zruty]   03.01.2009 23:52    | Reply | Edit |
1
я делал что-то вроде детектора движения на последовательности картинок в порядке курсовой. после первой же попытки использовать Pixels забросил это. вместо этого использовал встроенные в Windows DIB images, которые позволяют обращаться к картинке как к области памяти. очень удобно, можно даже на ассемблере вставки делать, и быстро работает. единственное что к остальной проге привязка несколько неудобная получается.

Top