| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Определение цвета графического файла по координате |
| Автор: Proger10 28.3.2009, 23:44 |
| Почитал в соседней теме 5 страниц на тему того как люди пытались получить из BMP файла цвет точки по её координате. Но. А если файл не BMP, если например JPG, GIF, PNG..? По каждому писать свой код, где программировать спецификацию формата? Неужели для C++ нет библиотеки для работы с графическими файлами, которая позволила бы делать подобное гораздо проще? (которую можно было бы использовать под компилятором G++ (GNU GCC) кроссплатформенно) |
| Автор: Proger10 28.3.2009, 23:50 |
| А.. ну тогда это похвально конечно А можно ли привести пример такой, которую можно было бы использовать под компилятором G++ (GNU GCC) кроссплатформенно? |
| Автор: cutwater 29.3.2009, 01:01 |
| ImageMagick GimpAPI boost::gil средства gtk (не уверен) средства QT может еще что вспомню. |
| Автор: Proger10 29.3.2009, 16:30 |
| Под линуксом очень люблю пользоваться ImageMagick'ом. Обалденная вещь. С огромной радостью узнал, что у них есть такой проект как Magick++: http://www.imagemagick.org/Magick%2B%2B/ (C++ API для ImageMagick) Поэтому копаю пока что в эту сторону. Кстати, она АПИ доступно и на других языках: http://magick.imagemagick.org/script/api.php Документация апи: http://magick.imagemagick.org/Magick++/Documentation.html В частности низко-уровневая работа с пикселями: http://magick.imagemagick.org/Magick++/Pixels.html Там указан пример компиляции программ с использованием ImageMagick API для Юниксовых систем: c++ -o example example.cpp `Magick++-config --cppflags --cxxflags --ldflags --libs` А для винды насколько я понял нужно таскать за собой ДЛЛки ИмиджМэджика.. cutwater, как я понимаю, кроссплатформенности не получается? Как я понимаю в общем дистрибе (кросс-платформенном) прийдётся таскать и либы для винды, и либы для юникса (, и либы для макоси)... Или есть другой менее габаритный способ использования? |
| Автор: cutwater 29.3.2009, 16:37 |
| а) низкоуровневая работа с пикселями уныла и меня не порадовала. конкретно проблема Q8 и Q16 б) не порадовала убогая документация все равно приложение придется компилить под каждую платформу, будь то винда или линукс. и в дистрибутиве таскать библиотеки или требовать зависимости. не любовь к dll для меня до сих пор странна. все этим пользуются, почему такое предвзятое отношение. и все решается нормальным инсталлятором. иначе советую задуматься о смене языка. Добавлено через 1 минуту и 22 секунды Общего дистра кроссплатформенного никогда не будет. Будет отдельно под каждую платформу. Но Вам код изменять не придется. Конечно вы можете все засунуть в один дистр, но вот скажите зачем виндоюзеру нужна сборка под linux и macos. |
| Автор: Proger10 29.3.2009, 16:43 | ||
А каким образом Вы работаете с пикселями?
да, да, я именно об этом и говорил. Скорее всего Вы действительно правы. Ограничиться нужно только тем, что код изменять не требуется. Код компилить под разную платформу это ясное дело. Сорри, просто, наверное как Вы поняли уже |
| Автор: mes 29.3.2009, 16:44 | ||
eсли Вы имeете кроссплатформенность на уровне машинного кода ,то, увы, такое недосягаемо (для cpp), а если на уровне исходного кода - то тогда для каждой оси свой дистриб |
| Автор: cutwater 29.3.2009, 16:50 |
| Нужно было написать небольшую утилиту аля стеганография. Вобщем ImageMagick в этом плане заставил повеситься в плане работы с цветом между Q8 и Q16 сборкой. Так мне никто толком и не ответил по данной теме. В итоге переписал на Python + PIL Но это лично мои косяки и я все же надеюсь когда-нибудь найду ответ. Все таки не хотелось бы из-за этого отказываться от пакета ImageMagick. |
| Автор: Proger10 29.3.2009, 18:40 |
| cutwater, а ты разработчикам ImageMagick (точнее Magick++) не писал? может они чем бы смогли помочь.. |
| Автор: cutwater 29.3.2009, 21:58 |
| |
| Автор: Proger10 29.3.2009, 23:17 |
| зато с проблемой бы разобрался, а то из-за этого приходится не использовать такую мощную штуку! |