Форум программистов, компьютерный форум CyberForum.ru

Объединение нескольких png файлов в один png-файл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как операционная система выделяет виртуальную память процессу? http://www.cyberforum.ru/cpp/thread1777330.html
Добрый вечер, хотел уточнить насчёт адресации: создаётся экземпляр win32 программы, выделяет процесс и 1 поток - ОС даёт процессу виртуальное адресное пространство в 4 ГБ - другими словами адрес, что придёт через new будет от 0..size_t::max за исключением первых 256 - как служебные - но каждому 0x001 адресу, что мы видим в студии не соответствует реальный адрес на ОЗУ - так как ОС защищает от...
C++ Ошибка: invalid conversion from "int" to "SDL_RendererFlip" Скриншот приложен, Вот страница, откуда я брал этот код Подскажите что делать http://www.cyberforum.ru/cpp/thread1776002.html
Icu итератор C++
Здравствуйте. Подскажите как с помощью icu проитерировать посимвольно UnicodeString и на выходе получить то, что сразу можно в обычный string запихнуть. Нагуглил такой вариант: #include <unicode/unistr.h> #include <unicode/uchriter.h> /******/ icu::UnicodeString ustr("Привет Мир! Hello World! 世界,你好!"); const UChar *testText = ustr.getTerminatedBuffer(); ...
C++ Подскажите пожалуйста либу на плюсах для операций с многоугольниками
Вообще задача - вычитать друг из друга пересекающиеся многоугольники (как во множествах) и соответственно находить результирующие многоугольники. Нашёл либу такую вещь, как "Clipper" но он работает только с целыми числами. Сылшал, что у Майкрософта есть какая-то либа для этого, но найти не могу. Подскажите, пожалуйста. Ну и желательно, чтобы можно было в коммерческих целях юзать.
C++ Как убрать столкновение Объектов на плоскости с пустым пространством? http://www.cyberforum.ru/cpp/thread1774470.html
Код определяет столкновение по х и y. if ((obj1.x + obj1.width >= obj2.x) && (obj1.x <= obj2.x + obj2.width)) XColl = true; if ((obj1.y + obj1.height >= obj2.y) && (obj1.y <= obj2.y + obj2.height)) YColl = true; Если (столкновение) то Obj1.x = Obj1.x-1 // Это движение персонажа. Если (столнулся со стенкой) то назад на 1 Вопрос: У меня получается, что Obj1(персонаж) сталкивается не только...
C++ Lvalue и rvalue Какая выгода использования rvalue? Допустим есть такой класс class A { public: A() = default; void setName(const std::string& name) { m_Name = name; } подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
08.07.2016, 12:18
Если на словах, то решение такое. Берём библиотеку чтения-записи PNG. Многие обратились бы к libpng, но я порекомендовал бы LodePNG: она простая, компилируется прямо в программу, поддерживает C++.
Читаем информацию о входных файлах (интересуют в первую очередь размеры картинок). На этом же этапе можно загрузить и содержимое картинок в формате RGBA. Это будут массивы строк изображения в порядке сверху вниз, в каждой строке пиксели слева направо, на каждый пиксель 4 байта. Определяем, каким образом картинки будут скомпонованы, исходя из их размеров. Если размеры известны заранее и они одинаковы, как в случае этих смайлов, задача упрощается. Создаём массив под выходное изображение в том же порядке (сверху вниз, слева направо, 4 байта на пиксель). Копируем туда строки из исходных изображений в нужном порядке. Если в результирующем изображении образуются пустые места, заполняем их, например, чёрным цветом с прозрачностью на максимуме. Записываем этот массив в PNG при помощи той же LodePNG.
Можно не писать всю программу сразу, а сначала поиграться с более простыми вещами: например, загрузить маленький простенький PNG и посмотреть, какие данные составляют изображение; сгенерировать простое изображение и записать в PNG; изменить загруженные данные, сохранить и посмотреть, что станет с картинкой.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru