LINUX.ORG.RU

История изменений

Исправление V1KT0P, (текущая версия) :

Блин я понял. Согласно исходникам fbgrab полностью непрозрачный альфа канал это 0x00. Хотя по идеи должен быть 0xFF, что и возращает framebuffer.

Замени вот эту строку:

outbuffer[(i<<2)+Alpha] = srcAlpha >= 0 ? inbuffer[i*4+srcAlpha] : 0xff;

на вот эту:

outbuffer[(i<<2)+Alpha] = '\0';

Должно заработать.

Да, fbgrab инвертирует значение альфы:

png_set_invert_alpha(png_ptr);

По хорошему надо определять надо ли инвертировать или не надо, плюс добавить опцию для принудительной установки инверсии.

Исправление V1KT0P, :

Блин я понял. Согласно исходникам fbgrab полностью непрозрачный альфа канал это 0x00. Хотя по идеи должен быть 0xFF, что и возращает framebuffer.

Замени вот эту строку:

outbuffer[(i<<2)+Alpha] = srcAlpha >= 0 ? inbuffer[i*4+srcAlpha] : 0xff;

на вот эту:

outbuffer[(i<<2)+Alpha] = '\0';

Должно заработать.

Да, fbgrab инвертирует значение альфы:

png_set_invert_alpha(png_ptr);

По хорошему надо определять надо ли инвертировать или не надо, плюс добавить опцию для принудительной установки инверсии.

Исходная версия V1KT0P, :

Блин я понял. Согласно исходникам fbgrab полностью непрозрачный альфа канал это 0x00. Хотя по идеи должен быть 0xFF, что и возращает framebuffer.

Замени вот эту строку:

outbuffer[(i<<2)+Alpha] = srcAlpha >= 0 ? inbuffer[i*4+srcAlpha] : 0xff;

на вот эту:

outbuffer[(i<<2)+Alpha] = '\0';

Должно заработать,