PHP, sybase, картинка gif

SonyEricsson

Новичок
PHP, sybase, картинка gif

Добрый день. Возник вопрос. СУБД Sybase. Таблица. Поле image. Загружаю gif.

$filename = "d:/in.gif";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);

ini_set('magic_quotes_sybase', 1);

$contents = addslashes($contents);
$res = sybase_query("insert TABLE ( FIELD1, FIELD2, FIELD3 ) values(1005, '111111','" . $contents . "')", $_db);


Все нормально.

Пробую выводить.

$res = sybase_query("select FIELD3 from TABLE where NOTE = '111111'", $_db);

$row = sybase_fetch_assoc($res);
$contents = $row['ADD_INFO'];
sybase_free_result($res);

header("Content-Type: image/gif");
echo $contents;

Не работает. Картинка не отображается. Есть мысль по поводу преобразования, ведь там бинарные данные, но не знаю с чего начать. В каком направлении двигаться?
 

Фанат

oncle terrible
Команда форума
приведи код скрипта, который выводит картинку, цкликом
 

SonyEricsson

Новичок
*****
sybase_min_server_severity(11);
$_db = sybase_connect('MAIN', 'sa', '', 'cp1251', 'Web Application');
sybase_select_db('BASE', $_db);

$res = sybase_query("select FIELD3 from TABLE where NOTE = '111111'", $_db);

$row = sybase_fetch_assoc($res);
$contents = $row['FIELD3'];
sybase_free_result($res);

header("Content-Type: image/gif");
echo $contents;
 

Фанат

oncle terrible
Команда форума
сохрани полученное в файл и сравни с оригиналом
 

DiMA

php.spb.ru
Команда форума
сравнивать побайтово утилитами ОС, например fc /b file1 file2
 

SonyEricsson

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

-~{}~ 13.03.09 13:41:

Исходный файл в дфоичном виде так выглядит:

GIF89a(  ч ЦЮпЦяяЮЮпзяяпЊпяячяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя, (  Ђ H°_БѓXИ°ЎГ‡#.(±ўЕ?/jј&#152;qЈG?+?8rcH’< ђТ$ Ќxs&З—0[:L©ТвЙЉ
фlt(Fњ0єP)SђHЃК¤9хжЕKifХшbЙ•»~ uмX±f_¦5›°_[· ;

а выгруженный в двоичном:

474946383961285c30135c30f75c305c30d6deefd6ffffdedeefe7ffffef8c08effffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2c5c305c305c305c30285c30135c305c3008805c3001081c48b0a0c183080b1258c8b0a1c38710232e1428b1a2c588142f6abc9871a347881d2b0688387263489203063c0c90d2245c308d030e1878187326c797305b3a4ca9d2e2c98a030af46c187428469c170b1830ba502953904881caa439f5e6c5014b6966d5f81362c9951ebb7e0c1b75ec58b166ada6359bb0ad5bb701015c303b
 

DiMA

php.spb.ru
Команда форума
во-вторых, зачем тогда ты здесь мосх компастируешь?

"4749463839" - соответствует "GIF89", что говорит о кривости чтения бинарных данных или ошибочном типе поля, а с самими данными все в порядке
 

SonyEricsson

Новичок
DiMA
А я не говорил что с данными проблема, и если ты внимательнее почитаешь вопрос, то увидишь, что я спрашивал как правильно считать данные.
 

DiMA

php.spb.ru
Команда форума
тебе же сказано - смени тип поля
если ломает прочитать доку - примени метод тыка
 

SonyEricsson

Новичок
Чем и занимаюсь

-~{}~ 17.03.09 16:43:

Поборол я эту проблему, рассказываю. Тип поля сделал text, но это не решило полностью вопроса, просто так туда записать и и считать не получилось. Пишем так

$filename = "d:/Out_Intern_00.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);

$contents = bin2hex($contents);

$res = sybase_query("insert TABLE ( FIELD1, FIELD2, FIELD3 ) values(1005, '111111','" . $contents . "')", $_db);


Читаем так
$res = sybase_query("set textsize 2097152 select ADD_INFO from TABLE where NOTE = '111111'", $_db);

$row = sybase_fetch_assoc($res);
$contents = $row['ADD_INFO'];

$contents_bin = '';

for($i=0; $i<strlen($contents); $i+=2)
{
$contents_bin .= chr(hexdec($contents[$i] . $contents[$i+1]));
}


$im = imagecreatefromstring($contents_bin);

header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
 
Сверху