Отображение картинок в рамках мобильной платформы
Решение проблемы с отображением картинок в формате JPEG в рамках мобильной платформы. Показ «тяжелых» картинок и анимации.
- Описание
- Подробнее
Описание
Всех приветствую!
Столкнулся с проблемой отображения картинок в формате JPEG на мобильной платформе версии 8.3.8.70. Картинку с сервера мобильная платформа получала, но на форме никак не отображалась. Картинку отображал стандартно — реквизит формы с типом строка, связанный с ним элемент формы с типом Картинка (более подробно можно узнать немного погуглив).
Предлагаю решение этой проблемы. В качестве бонуса можно отображать картинки весьма болиших размеров, а также gif-анимацию. Сорри, если это баян.
В данном случае картинки хранятся на сервере, поэтому на сервере картинку получаем в виде двоичных данных, пакуем, сериализуем и отправлем клиенту. Клиент десериализует распаковывает и двоичные данные записывает во временный файл. Вот код, решение крайне простое.
Сервер:
ДвоичныеДанные = Новый ДвоичныеДанные(<ПутьККартинке>);
ХранилищеКартинки = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));Клиент:
ДвоичныеДанные = ХранилищеКартинки.Получить();
ВременныйФайл = ПолучитьИмяВременногоФайла();
ДвоичныеДанные.Записать(ВременныйФайл);
ИнфоHTML = "<html>
|<head>
|<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
|</head>
|<body>
|<img src = " + ВременныйФайл + ">
|</body>
|</html>";Также на клиенте при закрытии формы, в которой отображается картинка, необходимо убрать за собой временный файл путем метода УдалитьФайлы().
Для отображения картинки на форме используем HTML-поле (ИнфоHTML в коде), в котором атрибуту src тега <img> (отвечает за вывод изображения) присваиваем значение пути к временному файлу. ВСЕ. В результате jpg отображается без проблем, кроме того, размер его может быть очень большим — в качестве теста попробовал фото, размером 11Мб, все отработало как нужно. Также в данном способе нет особой необходимости регулировать размеры изображения, т.к. это можно делать двумя пальцами (уменьшать/растягивать). Ну, и что совсем обрадовало — GIF анимация тоже работает без нареканий.
Ниже гифка, записанная с экрана телефона.


