Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML + XSL + PHP => HTML, Как передать бинарный код рисунка ? 
:(
    Опции темы
Lexxx_HU
Дата 28.2.2007, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 17.10.2006

Репутация: нет
Всего: нет



здраствуйте все ...
похожие темы были .. но данного вопроса нет ...
обрисую ситуацию..

имеется файл *.xml (сохраненный в Word-е с рисунком)
имеется шаблон *.xsl 

к этому всему применяется скрипт php

Код

<?php 
header("Content-type: text/html; charset=UTF-8");
// Allocate a new XSLT processor 
$xh = xslt_create(); 

// Process the document, returning the result into the $result variable 
$result = xslt_process($xh, 'test2.xml', 'wordML-html.xsl'); 
if ($result) { 
    echo $result; 
}else { 
    echo "Sorry, Error"; 
} 
xslt_free($xh); 
?>


получается вот такая страница
(на кодировку внимания не обращайте)

как видно на ней рисунок представлен в бинарном виде ...

имеется скрипт для преобразования бинароного кода в рисунок

Код

<?php
$data = '..... тут бинарный код ....';
$data = base64_decode($data);

$im = imagecreatefromstring($data);
if ($im !== false) {
   header('Content-Type: image/png');
   imagepng($im);
}
else {
   echo 'An error occurred.';
}
?>


по отдельности все работает ...
если вставить скопировать бинарный код ... и вставить в нижний скрипт.. то рисунок выводится..
как видно .. в первом скрипте все передаются в одной переменной - $result
так вот вопрос .. как из этой перменной "достать" этот код .. и передать в переменную $data
то есть по сути дела ..как эти 2 файла соединить в один ?

спасибо всем кто откликнется
если Админы посчитают что тему не сюда .. то переместите пожалуйста
PM MAIL   Вверх
Lexxx_HU
Дата 1.3.2007, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 17.10.2006

Репутация: нет
Всего: нет



имеется код

Код
<?php
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
       . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
       . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
       . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);

$im = imagecreatefromstring($data);
if ($im !== false) {
   header('Content-Type: image/png');
   imagepng($im);
}
else {
   echo 'An error occurred.';
}
?>


как скриптом сохранить данный рисунок без участия человека (НЕ save as...) ?
чтобы он записал его в той же папке где лежит скрипт по менем "xxx.png" ?
PM MAIL   Вверх
Vassya
Дата 8.3.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.3.2007

Репутация: нет
Всего: нет



Lexxx_HU, есть такая идея. Когда я занимался схожим вопросом, то решил изображения в документ Word вставлять не как внутренние объекты (изображение -> вставить), и как ссылки на внешние (изображение -> связать с файлом). Таким образом, графика храниться отдельно, на сайт загружается вместе с документом Word в формате XML. Далее этот документ парсится XSLT, когда встречается тег изображения, из него вытягивается URL, который и вставляется в генерируемый HTML как атрибут тега img.

Подумаем теперь как быть, если изображение хранится в самом документе. 
Опишу далее подход, который пришел мне в голову но на практике не реализовывался и не проверялся.

Структура: 

пусть за обработку xml и вывод html отвечает динамическая страница article.php, которая собственно вызывает XSLT WordML-html.xsl.
В ней будет размещена ваша функция, первая из примера.
Кроме того, сделаем специальную переменную, определяющую URL документа, который обрабатывается. Имя переменной - document, в нашем примере принимает значение document.xml.

В XSLT WordML-html.xsl есть функция которая обрабатывает ("вытягивает") узлы, в которых хранятся изображения в бинарном виде. Эта функция на выходе генерирует html-код типа <img src="img.php?file=document.xml&img_position=1" />, в который помещает значение URL документа (т.е. значение вышеупомянутой переменной document, здесь - document.xml) и позиции рисунка (XPath функция position(), здесь - 1). 
Как видно, это обычный тег изображения, находящегося по соответствующему URL. А по указанному URL мы будем выдавать конкретно изображение, генерируемое с помощью вашей функции (2-я из примера).

Рассмотрим этот URL.
img.php - страница, содержащая вашу функцию по "преобразования бинароного кода в рисунок". Страница вызывает некое WordML-img.xsl, которое вытягивает бинарный код изображения с указанной позицией из указанного документа, и к этому бинарному коду и применяется ваша функция.
HTTP-параметры: file=document.xml - указываем конкретный документ, из которого нужно вытянуть рисунок, img_position - позиция в документе рисунка, который нужно вытянуть.

Концептуально примерно так. Если у вас получится реализовать на практике - будет здорово!
Я же буду по прежнему использовать в документах не вставленные, а связанные изображения.

Это сообщение отредактировал(а) Vassya - 8.3.2007, 16:12
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.3043 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.