| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Склеить 2 png |
| Автор: Akella 29.8.2013, 00:00 |
| Как на Delphi склеить 2 png. Одну картинку поставить рядом с другой. Картинки горизонтальные, вот такие: http://rghost.ru/private/48437911/c6e3d900188a45320feedf1144fc11e1 Delphi XE3 да, с графикой я не очень дружу :( |
| Автор: Alexeis 29.8.2013, 07:58 |
| png склеиваются после преобразования из в bmp. Создаешь битмап нужного размера и формата рисуешь на нем свои битмапы, затем пожимаешь обратно в png. |
| Автор: Akella 29.8.2013, 11:10 | ||||
Тут есть у меня код, но он неправильно работает с png без альфа-канала.
blendCoeff:=aSL1[x] * 100/255/100;// здесь вываливается AV я так понимаю, что нужно сделать какие-то исправления, но... я не знаю какие Добавлено через 5 минут и 27 секунд Мне почему-то не приходят уведомления :(, хотя я подписан на эту тему Добавлено через 8 минут и 59 секунд В общем я сделал проще. Картинку без альфа-канала я конвертирую в картинку с альфаканалом
|
| Автор: Alexeis 29.8.2013, 11:59 |
| Akella, просто автор неправильно сделал. Когда имеются 2е картинки, то они не обязаны иметь одинаковый формат. Правильным решением будет привести их к одному формату (какой зависит от задачи) и тогда объединять. Если же альфаканал совсем не нужен, то просто рисуй их методом Draw Canvas-a на битмапе, а его жми в пнг. |
| Автор: Akella 29.8.2013, 12:24 | ||||||
| Что я делаю не так? Процедура нормально склеивает два BMP и потом передаётся в png
Вот как использую, но сохраняется пустой файл в итоге
Добавлено через 12 минут и 6 секунд Я так понял, что нужно добавить VAR
|
| Автор: phomm 29.8.2013, 12:56 | ||
Я пользуюсь примерно таким (адаптируя для каждой задачи, как и сейчас - тут подредактировал, могут быть микрокосяки):
По идее, зависимости быть не должно, но работало под дельфи7 с внешней библиотекой pngimage, для дельфи выше 2009 вроде всё уже включено |
| Автор: Akella 29.8.2013, 13:08 | ||
| Да, только в новых версиях не TPNGObject, а TPNGImage и в uses нужно подключать Vcl.Imaging.pngimage В Вашем коде достаточно будет переименовать TPNGObject в TPNGImage. Ещё один момент. в секции VAR вместо pByteArray нужно использовать Vcl.Imaging.pngimage.pByteArray
|
| Автор: Alexeis 29.8.2013, 13:19 |
| Метод b1.Assign(png1); не работает. вместо него есть png1.AssignTo(b1); |
| Автор: Akella 29.8.2013, 13:28 |
| почему это не работает, ведь склеивает, значит работает |
| Автор: Akella 30.8.2013, 11:53 |
| x128, кто сказал, что не устраивает? |