2015-06-03 3 views
0

Я разрабатываю приложение, которое загружает png-изображение из Интернета и отображает его. По какой-то причине gbitmap_create_from_png_data() не удается загрузить большинство изображений с следующее сообщение об ошибке:gbitmap_create_from_png_data() не удается загрузить изображение

[ERROR] gbitmap_png.c: выделение PNG памяти не удалось

[ERROR] gbitmap_png.c:: 49 99: Не удалось load PNG

Я сомневаюсь, что я потерял память. Я говорю это, потому что я пробовал загружать очень маленькие изображения размером 4 КБ, и они все еще терпят неудачу. С другой стороны, некоторые изображения, хотя размером 16kb, загружаются успешно. Другая запутанная вещь заключается в том, что те же изображения, которые не загружаются с использованием gbitmap_create_from_png_data(), загружаются с использованием gbitmap_create_with_resource(), если я добавлю их в качестве ресурсов изображения в свое приложение. Таким образом, изображения правильно формируются для Pebble. Загруженные изображения имеют тот же размер, что и локальные, поэтому я сомневаюсь, что данные изображения повреждены.

Успешное изображение: http://brucedalemansion.com/images/baby_16.png

Un-Успешное изображение: http://i.imgur.com/CUJwSU7.png

ответ

0

ООН-успешное изображение содержит прозрачность кусок (TRNS) с 0 записей. Для палитры палитры (pLTE) это будет недействительным по спецификации. Для блока прозрачности он может считаться действительным ... поскольку спецификация PNG заявляет «[равно] или меньше записей tRNS, чем записи палитры».

Поскольку какой-то инструмент создает PNG с этой проблемой, я добавляю поддержку нашего PNG-декодера для этого. Мне было бы интересно, какой инструмент сделал это изображение PNG.

Мэтт из гальки