Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

PHP и Двоичные Данные 1с

PHP и Двоичные Данные 1с
Я
   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 ничего не получаю.

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует