Отображение PNG из памяти
От: Lonely Dog Россия  
Дата: 12.10.17 17:33
Оценка:
Добрый день!

В документе есть img, у которого src указывает на файл на диске в формате SVG (размер 72x72). Это типа логотип.
Далее, получив из внешнего источника PNG файл (размер 400x400), я хочу его отобразить в img. Для этого я делаю следующее:
1. в tiscript пишу в img.src строку "mem:random_value" (random_value на случай, если картинка где-то кэшируется).
2. в обработчике on_load_data смотрю URL, если он похож на mem:*, то вызываю SciterDataReady, передавая url, и картинку, кроме того картинку сохраняю в файл (чтобы после падения убедиться, что PNG был не битый)


В итоге в 9 случаях из 10 программа падает (уже после возврата из on_load_data). На экране получаю информацию о PNG read error. В отладчике вижу сообщение access violation.
Версия sciter 3.3.1.10, платформа Windows 10 x86.

Что можно сделать для диагностики этой проблемы?

Заранее спасибо
Re: Отображение PNG из памяти
От: c-smile Канада http://terrainformatica.com
Дата: 13.10.17 00:18
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

На экране получаю информацию о PNG read error


Каким образом получаешь?
Re[2]: Отображение PNG из памяти
От: Lonely Dog Россия  
Дата: 13.10.17 04:33
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, Lonely Dog, Вы писали:


CS>

CS>На экране получаю информацию о PNG read error


CS>Каким образом получаешь?

В консольном окне отображается сообщение от libpng.
Re[3]: Отображение PNG из памяти
От: Lonely Dog Россия  
Дата: 13.10.17 14:27
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>Здравствуйте, c-smile, Вы писали:


CS>>Здравствуйте, Lonely Dog, Вы писали:


CS>>

CS>>На экране получаю информацию о PNG read error


CS>>Каким образом получаешь?

LD>В консольном окне отображается сообщение от libpng.
И еще вопрос, а как работает SciterDataReady? Он копирует данные (PNG в моем случае) к себе или ожидает, что эти данные будут жить по переданному адресу? Другими словами, могу ли я освободить буфер после вызова SciterDataReady?
Re[4]: Отображение PNG из памяти
От: c-smile Канада http://terrainformatica.com
Дата: 13.10.17 16:26
Оценка:
Здравствуйте, Lonely Dog, Вы писали:


SciterDataReady() копирует данные в internal buffer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.