Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2013, 00:36   #1
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
Хорошо Как закрутить с PNG?

Нашёл великолепный пример вращения картинки (ссылка) но возникла проблема с тем, что он работает с BMP. Переучить его на PNG вроде бы удалось, но в таком случае PNG теряет прозрачность.
Может, кто-то что-то подскажет? Код там небольшой, но я просто мало что знаю в вопросе работы с картинками

P.S.
Прикрепил скрипт по ссылке к этому посту.
Вложения
Тип файла: zip plgblt-rotation-example.zip (236.1 Кб, 14 просмотров)

Последний раз редактировалось Raf-9600; 24.01.2013 в 19:28.
Raf-9600 вне форума Ответить с цитированием
Старый 24.01.2013, 01:36   #2
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

вот это посмотрите хоть метод громоздкий и меееедленый но работает
Вложения
Тип файла: zip Поворачиваем PNG через BMP.zip (403.8 Кб, 24 просмотров)
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 24.01.2013, 15:52   #3
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от dmitriegorovih Посмотреть сообщение
вот это посмотрите хоть метод громоздкий и меееедленый но работает
Ну это ведь не совсем то. Это одноразовый поворот, а код выше крутит изображение, и к тому же он лаконичный и очень быстрый.

Последний раз редактировалось Raf-9600; 24.01.2013 в 17:02.
Raf-9600 вне форума Ответить с цитированием
Старый 24.01.2013, 17:11   #4
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Посмотрите мой пример. Код небольшой. Правда он не особо быстрый. Поворот изображения на 360 градусов длится чуть более 3 секунд.
Вложения
Тип файла: zip #2.zip (722.6 Кб, 19 просмотров)
kangreon вне форума Ответить с цитированием
Старый 24.01.2013, 19:29   #5
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от kangreon Посмотреть сообщение
Посмотрите мой пример. Код небольшой. Правда он не особо быстрый. Поворот изображения на 360 градусов длится чуть более 3 секунд.
На Delphi 7 там куча ошибок возникает, которые не дают скомпилировать.
Raf-9600 вне форума Ответить с цитированием
Старый 25.01.2013, 00:02   #6
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
Ну это ведь не совсем то. Это одноразовый поворот, а код выше крутит изображение, и к тому же он лаконичный и очень быстрый.
Ну смотрите я вам показал как можно преобразовать BMP в PNG одним из самых простых способов, по скорости не знаю, а так вообще работа с BMP будет быстрей потому что используется 24 бита на пиксель в отличие от PNG 32 бита. поэтому ваш код лаконичен и очень быстрый.
P.S.Я как-то писал resize png так вот через bmp время на обработку было примерно 967 миллисекунд, в то время когда работая на прямую с пикселями png, время где-то 16 миллисекунд
Воображение важнее, чем знания. (Albert Einstein)

Последний раз редактировалось dmitriegorovih; 25.01.2013 в 00:05.
dmitriegorovih вне форума Ответить с цитированием
Старый 25.01.2013, 00:12   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от dmitriegorovih Посмотреть сообщение
Ну смотрите я вам показал как можно преобразовать BMP в PNG одним из самых простых способов, по скорости не знаю, а так вообще работа с BMP будет быстрей потому что используется 24 бита на пиксель в отличие от PNG 32 бита. поэтому ваш код лаконичен и очень быстрый.
P.S.Я как-то писал resize png так вот через bmp время на обработку было примерно 967 миллисекунд, в то время когда работая на прямую с пикселями png, время где-то 16 миллисекунд
сомневаюсь что работа с данными некратными машинному слову быстрее чем с кратными.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.01.2013, 02:51   #8
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Raf-9600
Исправил код под Delphi 7. Посмотрите сейчас.
Вложения
Тип файла: zip PngRotate.zip (380.8 Кб, 25 просмотров)
kangreon вне форума Ответить с цитированием
Старый 25.01.2013, 13:33   #9
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
сомневаюсь что работа с данными некратными машинному слову быстрее чем с кратными.
Возможно отрицать не буду но при работе через BMP создается два BMP в один пишется RGB в другой альфа канал и поворачивает по отдельности а потом с каждого BMP все-это пишется обратно в PNG это очень долго.
Вместо всего этого код kangreon работает на прямою с png без всякого BMP что и увеличивает скорость работы несмотря на кратность машинного слова.
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 26.01.2013, 04:18   #10
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от kangreon Посмотреть сообщение
Посмотрите сейчас.
Это первый вариант из тех что я находил, который совсем не нагружает процессор во время поворота картинки. Но к сожалению, время запуска этого варианта непозволительно долгое =\
Raf-9600 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить png? pavellyba Мультимедиа в Delphi 0 23.10.2011 22:00
как в delphi 7 загрузить png Too Общие вопросы Delphi 7 11.07.2011 00:12
[Delphi] как открыть *.png программно? Ax_32 Помощь студентам 2 26.11.2010 21:35
Как использовать png Sanek777 Общие вопросы Delphi 1 25.09.2008 20:14
Как уменьшить размер PNG изображения? highklass Мультимедиа в Delphi 5 31.05.2008 16:24