Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.02.2011, 17:16
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
Печаль Работа с png

Появилась такая задача - обработать много, действительно много, png-файлов. Думал, с Delphi всё будет проще, на деле оказалось иначе.

Использую компонент TPNGObject (кстати, когда я его устанавливал, у меня установился почему-то лишь PNGButton, но сейчас не об этом).

Для начала решил, что надо научиться всех их уменьшать. Нашел пару функций, для перевода в bitmap и обратно. Bitmap уже уменьшаю.

И сразу проблемы:

1. Потеря качества.
Было:

Стало:

Не смертельно, но неприятно.

2. Альфа-канал не работал, как следует. Оно и понятно - при переводе в bitmap я пытаюсь получить к нему доступ, а его нет. Легко исправляется проверкой, есть ли прозрачность. (Есть и еще один способ, но в нем я не уверен).

3. Второй пункт я бы не писал, если бы не третий. Основной. Всю жизнь мне испортил. Короче, есть пара файлов. У них есть прозрачность. Но программа на них плющится и крешится, в bmp они не конвертятся - лишь по пикселям, а в таком случае неясно, откуда брать альфаканал. Они как непрозрачные, но прозрачность-то есть! Даже не меняя их, а лишь сохраняя после загрузки, я получаю нечто ужасающее:

(Слева - то, что было).

Я научился их отфильтровывать - параметр Header.ColorType у них равен трем. У обычных прозрачных - шести, у непрозрачных - трем. А хотелось бы обрабатывать, как и всё остальное.

Я ламер, да? Может, есть еще какой-нибудь компонент, который работает с png более универсально?

И да, почему тут пусто? А то, может, у меня устаревшая версия.
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.

Последний раз редактировалось IllVDG, 24.02.2011 в 17:18.
Ответить с цитированием
  #2  
Старый 24.02.2011, 22:44
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
По умолчанию

Окей, тогда, возможно, кто-нибудь знает язык, подобный Delphi. На котором можно решить задачу.

Может, Abode AIR...
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.
Ответить с цитированием
  #3  
Старый 24.02.2011, 23:09
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
По умолчанию

Нашел еще один компонент, Graphics32 и какое-то дополнение к нему. Пока - лишь перевод в bmp и обратно:

Так что предыдущий вопрос еще в силе.

У меня в браузере результат непрозрачный. А если сохранить картинку - прозрачный, хоть и не такой, как оригинал.
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.

Последний раз редактировалось IllVDG, 24.02.2011 в 23:13.
Ответить с цитированием
  #4  
Старый 24.02.2011, 23:19
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

www.torry.net,
далее в строке поиска пишем png и проверяем полученные ссылки (у меня из первых 4х три - разные библиотеки для работы с png).
Ответить с цитированием
  #5  
Старый 24.02.2011, 23:56
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
По умолчанию

Большое спасибо.

1. Multilayered PNG Array MPNG v.1.0. Многослойные PNG. 32-битные. Зачем мне это?
2. PNG Components for Code Gear C Builder 2007 v.1.0. У меня Delphi, а не Builder.
3. PNG Componets Plus v.1.00. Оболочка для pngimage, добавляет визуальные компоненты. Глюки pngimage я описал в первом сообщении.
4. PNG Delphi v.1.564. См. п.3.
5. PNG Icon Portfolio v.2010.4. Подпись "D1" меня настораживает.
6. Png Splash Form v.1.0. Нужна Delphi 2009. Просто визуальный компонент. Использует pngdelphi (который официально появился в Delphi 2009).
7. PNG to ICO Converter v.1.0. Это не то. Понятно, почему?
8. Transparent & PNG Support Image Button v.1.0. Мне не нужны кнопочки. Мне нужно работать с png-файлами.

Далее: Shown from 1 to 8 of 8.

Повторяю, большое спасибо. Вы мне очень помогли.

Может, если я смог нарыть то, что я уже нарыл, причем не засветившись тут с этой темой ранее - я все-таки умею пользоваться поиском? Ну, хотя бы в рамках torry.net?
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.
Ответить с цитированием
  #6  
Старый 24.02.2011, 23:59
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
По умолчанию

А Graphics32 работает очень неплохо. Надо бы только с этими странными картинками разобраться.
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.
Ответить с цитированием
  #7  
Старый 25.02.2011, 11:46
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
По умолчанию

Все, с первой проблемой (потеря качества) разобрался. Вторая ушла сама собой после перехода на Graphics32. С третьей либо сейчас разберусь, либо объявлю несущественной.

Всем спасибо .
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.
Ответить с цитированием
  #8  
Старый 25.02.2011, 13:59
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

Если не сложно то скинь исходники , я думаю многим будет полезно
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #9  
Старый 25.02.2011, 16:16
x128 x128 вне форума
Новичок
 
Регистрация: 03.02.2010
Сообщения: 64
Репутация: 133
По умолчанию

Цитата:
Сообщение от IllVDG
Для начала решил, что надо научиться всех их уменьшать. Нашел пару функций, для перевода в bitmap и обратно. Bitmap уже уменьшаю. И сразу проблемы...
Bitmap и альфаканал не совместимы в привычном понимании, т.е. для работы с Bitmap+Alpha все или почти все манипуляции нужно делать руками.
Цитата:
Сообщение от IllVDG
Короче, есть пара файлов. У них есть прозрачность. Но программа на них плющится и крешится...
PNG поддерживает много растровых форматов и с прозрачностью могут быть как полноцветные картинки, так и картинки с палитрой, в варианте с палитрой, прозрачность находится не в отдельном слое (альфаканале), а в чанке tRNS где каждый индекс прозрачности соответствует индексу палитры.
Цитата:
Сообщение от IllVDG
Я ламер, да? Может, есть еще какой-нибудь компонент, который работает с png более универсально?
TPNGImage лучший компонент для работы с PNG форматом, как по удобству, так и по реализованным возможностям. Рюшечек конечно нет, но если разобраться, все становится просто и понятно.
Цитата:
Сообщение от IllVDG
И да, почему тут пусто? А то, может, у меня устаревшая версия.
Этот компонент стал частью делфи, начиная с Delphi 2009, по какой причине там теперь пусто непонятно.

Если стоит задача по обработке, то, как минимум, нужно ознакомиться со спецификацией PNG и почитать справку к TPNGImage.

Для примера набросал две процедуры:
1) преобразование палитрового изображения в RGB
2) изменение размеров изображения в формате RGB
PNGResize.rar
Ответить с цитированием
  #10  
Старый 25.02.2011, 16:17
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
По умолчанию

Только что я окончательно разочаровался в своей идее и решил всё делать через фотошоп.

Сложность была в том, что есть особенные файлы, которые менять надо иначе. Вся их особенность - в небольшом комментарии к имени. В этих файлах трогать крайние пиксели нельзя. А как сделать это в фотошопе - еще не знаю.

С моей программой получилась какая-то чепуха. В первом посте я описывал свои проблемы от первых двадцати файлов. Вот я их пофиксил, всё оформил, работает прекрасно, перехожу к оставшимся тысяче тремстам файлам...

Короче, с ними я уже набрал не меньше трех проблем, каждая из которых стоит той, первой. То есть они так же какие-то особенные и закидывают меня ошибками. Грустно всё это.

Поглядим, как справится фотошоп.
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.
Ответить с цитированием
  #11  
Старый 25.02.2011, 16:19
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
По умолчанию

Ну ни фига себе! Моя программа обошла фотошоп и по скорости, и по проценту успешных переводов!

Ой, как интересно...

x128,
Спасибо, сейчас посмотрю.
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.
Ответить с цитированием
  #12  
Старый 25.02.2011, 17:04
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
По умолчанию

x128,
Теперь всё работает! Большое спасибо!
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.
Ответить с цитированием
  #13  
Старый 26.02.2011, 19:05
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
По умолчанию

> 18:57:32 [i]: Программа запущена
> 18:57:46 [i]: Найдено файлов: 1347
> 18:59:54 [i]: Обработка завершена
> 18:59:54 [i]: Успешно обработано: 1347
> 18:59:54 [i]: Не были обработаны: 0
> 18:59:54 [i]: В процентах: 100%

Вот это крутизна! Спасибо еще раз!)
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.
Ответить с цитированием
  #14  
Старый 06.03.2011, 13:43
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
По умолчанию

Наверное, я тут всем уже надоел. Но у меня снова проблема. В этом архиве горстка файлов. Они нормально открываются и сохраняются. Но жутко ресайзятся. К примеру, у одного из них глубина цвета - два бита. Было нечто серое. На выходе - нечто зеленое.

Помогите, пожалуйста. Можете тыкнуть носом в поиск - но скажите, что туда вводить. Пожалуйста.

http://dl.dropbox.com/u/13214493/bad_png.rar
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.
Ответить с цитированием
  #15  
Старый 07.03.2011, 11:00
x128 x128 вне форума
Новичок
 
Регистрация: 03.02.2010
Сообщения: 64
Репутация: 133
По умолчанию

Цитата:
Они нормально открываются и сохраняются. Но жутко ресайзятся.
Если речь идет о моем примере, там не все форматы PNG будут корректно обрабатываться, нужно доработать чтение форматов с разрядностью ниже 8 бит и все форматы в градациях серого. Ссылку на спецификацию я давал и справку по TPNGImage всеже стоит почитать.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025