Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.fds-net.ru/showflat.php?Number=8218007&src=arc&showlite=l
Дата изменения: Unknown Дата индексирования: Tue Feb 26 22:21:19 2013 Кодировка: Windows-1251 |
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: да, правильнее снаружи, и на каждое создание отдельный try можно еще внутри блока finally проверять на null-и | ||
ayvango
[re:DarkGray] 03.01.2009 21:08 | Reply | Edit | | 0 | |
Quote: а разве free не делает это само? | ||
Rad
[re:ayvango] 03.01.2009 21:51 | Reply | Edit | | 0 | |
В ответ на:делает, но для этого его нужно обнулить перед try-finally блоком ![]() ![]() | ||
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 |