вывод изображения, его канва в base64

zuxel

Новичок
вывод изображения, его канва в base64

Понадобилось разобрать xml выгрузку из 1с, в ней есть base64 закодированные изображения. Проблема в том, что после base64_decode я не получаю изображение. В примечании, программист, который писал выгрузку написал, что закодирован не файл, а данные jpeg "канвы". Первый раз сталкиваюсь с подобным, что за канва, и как из нее сформировать картинку?
Пример:
PHP:
Picture="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

IoCFOKIhAoREAREQEIiIDEoiIAiIgP/Z"
 

HEm

Сетевой бобер
возьми jpg-файл, положи его в 1С
потом скриптом сделай ему base64и сравни, что получилось с тем что лежит в 1С
 

zuxel

Новичок
у меня нет 1с, да и не работал я с ней никогда. Но как я понял, 1с еще как-то по своему переписывает изображение, когда в базу себе пишет или что ты хотел сказать?
 

damngood

Мозг был, но ушел...
PHP:
$picture = base64_decode(str_replace("
", "", $Picture));

header('Content-type: image/gif');
echo ($picture);
-~{}~ 27.11.09 10:50:

PS: тому кто придумал так хранить данные, надо нагадить в карман... чтобы потом думали башкой
 

vokson

Новичок
Даже после удаления "
" файл не прочитается. У меня вот так:

PHP:
  $jpg = str_replace('AgFTS2/0iI3BTqDV67a9oKcN', '', $jpg);
    $jpg = preg_replace('/[\n\r]/', '', $jpg);
    $jpg = base64_decode($jpg);
    $jpg = gzinflate($jpg);
    $start = chr(hexdec('ff')).chr(hexdec('d8'));
    $jpg = substr($jpg,strpos($jpg, $start));
    
    $fp = fopen($filename, 'wb'); // Бинарный режим
    $test = fwrite($fp, $jpg); // Запись в файл
    if (!$test) echo 'Ошибка при записи в файл.<br/>';
    fclose($fp); //Закрытие файла
Плюс
PHP:
 $picture = base64_decode(str_replace("&#xA;", "", $Picture));
, если требуется.
 
Сверху