Имя: Пароль:
1C
1С v8
PHP и Двоичные Данные 1с
0 KKrKKdd
 
17.10.16
07:58
Добрый день!
Уважаемые участники форума, нужна ваша помощь и идеи!
Работаю с web сервисами. Подтягиваю в php двоичные данные изображения.
Делаю:
header("Content-type: image/gif");
echo $picture;
Получаю результат: картинка отображается как нужно.
Но вот ведь в чем проблема. Я к этому пхп обращаюсь извне, используя JSON
Как известно JSON не работает с двоичными данными. Поэтому я хочу получить двоичные данные как строку и затащить уже ее.
Когда я вывожу свой файл меняя тип контента,
header("Content-type: text/enriched");
//header("Content-type: image/gif");
echo $picture;
то получаю краказябру типа

ͽ ×ÚÔ-á{5d>|S3ºç¸nŸÖ¿/ÿ�àä_Ñ^ÁàÚsK¶Ä—1Ëá½vU³ 7®Þ¿)û¢º¨JÕ=LªkÿÙ��������������������������������������
и так очень долго.

теперь нашла следующее. Якобы если дописать нижеприложенные строки то получиться бинарная строка.


$_buffer = '';
for ($i = 0; $i < $len; $i++) {
  $_buffer .= sprintf("%08b", ord($buffer[$i]));
}

$len я определяю так:
$len=strlen($buffer);

$_buffer получается довольно такой двоичный и красивый. но при попытке его вывести как когда-то выводила $picture ничего не получаю.

Думаю где-то очевидная грубая ошибка, но не могу нагуглить.
Кто подскажет выход из ситуации? Спасибо за внимание!
1 Asmody
 
17.10.16
07:59
(0) Кодируй свою картинку в base64.
2 KKrKKdd
 
17.10.16
08:00
&#65533; не отображается здесь. это такой белый вопросик в черном ромбе
3 Asmody
 
17.10.16
08:01
4 KKrKKdd
 
17.10.16
08:05
а потом в framework7 я смогу ее декодировать?  и она будет так же легко отображаться в окне?
5 Asmody
 
17.10.16
08:07
Что за "фреймворк7"?
6 KKrKKdd
 
17.10.16
08:43
я пишу мобильное приложение, используя cordova, framework7. Очень похоже что Base64 тоже не катит. Сделала кодирование,

$picture64=base64_encode($picture);
$CardID = array("$picture64", $Address);
echo json_encode($CardID);

Теперь в самом приложении получаю
                        
newdata = JSON.parse(data);
encodedString = newdata[0];
             alert(encodedString);   // тут всплывает длинное но пустое сообщение
            //var binaryPicture = atob(decodedString);
          
            var img = document.getElementById('main');
            img.src = 'data:image/jpeg;base64,' + encodedString;
            document.body.appendChild(img);
        
ошибки не выдает. src похоже подменяется, и изображение становится пустым...

причем если попробовать вывести второй элемент массива, с этим все хорошо.
7 KKrKKdd
 
17.10.16
08:46
Что же я делаю не так, и как мне сделать так чтобы так не делалось :)
8 KKrKKdd
 
17.10.16
13:22
Ну что, никаких идей?
9 МихаилМ
 
17.10.16
15:12
ваша картинка после {5d>|S3 это скорее всего размер картинки .
ну и закрывающую скобку удалите. также возможно что картинка пожата алгоритмом deflate