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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывести картинку из базы, Картинка отображается не целиком! 
:(
    Опции темы
MaxxSoftware
Дата 14.12.2005, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



СУБД: MS SQL Server 2000 EE
база такая:
(qwe)
| id:int | im:image |

вытаскиваю картинку с базы вот так вота:
Код

$link = mssql_connect("127.0.0.1","login","paswd") or die("Не могу соединиться с сервером");
mssql_select_db("qwe",$link) or die ("Hе найдена база данных.");
$res=mssql_query("SELECT im FROM qwe where id=56")
  or die("SQL ERROR in line ".__LINE__.", function mysql_query");
$image=mssql_result($res,0,0); // берем переменную из б.д.
$x = strlen($image);
header("Content-Length: $x");
header("Content-type: image/jpeg;");
echo $image;


Картинка выводится не полностью... как я понял выводится тока определенное количество пикселей.... (при том очень мало smile )

перед выводом на екран пытаюсь сохранить рисунок
Код

  $fil = fopen('c:\\1.jpg',"a");
  fwrite($fil,$image);
  fclose($fil);

Сохраняется тоже не полность....

В базе картинка лежит целиком, ибо в Делфи я ее вытаскиваю без пролем и отображаю.

PM MAIL   Вверх
Mal Hack
Дата 14.12.2005, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Правильно я понял, что глюк только в выводе на ПХП, что в Делфи картинка отображается корректно?
Какого типа поле, где хранится картинка?

Цитата(MaxxSoftware @ 14.12.2005, 06:43)
header("Content-Length: $x");

Убери. Изменения будут?
PM ICQ   Вверх
MaxxSoftware
Дата 15.12.2005, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ага, тока при вытаскивании в ПХП, в Делфе все без проблем. Поле типа Image.

нет,все осталось без изминений, изначально етого (Content-Length) не было, посоветовали приписать.... к томуже в файл то сохраняется тоже обрезано, а ето происходит раньше определение длинны

Это сообщение отредактировал(а) MaxxSoftware - 15.12.2005, 06:53
PM MAIL   Вверх
Mal Hack
Дата 15.12.2005, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(MaxxSoftware @ 15.12.2005, 06:52)
Поле типа Image.

В ms точно есть такое поле?

PM ICQ   Вверх
Guest
Дата 15.12.2005, 14:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Попробуй:
Код

 $fil = fopen('c:\\1.jpg',"ab");

Буква 'b' указывает, что открывается бинарный файл.

  Вверх
Guest
Дата 15.12.2005, 14:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Т. е. может, echo обрезает поток данных $image на символе с кодом 0, считая его концом строки?

  Вверх
MaxxSoftware
Дата 15.12.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Mal @ 15.12.2005, 13:00)
В ms точно есть такое поле?

Конечно.


Цитата(Guest @ 15.12.2005, 14:14)
Буква 'b' указывает, что

тож самое, сохраняется обрезано. на страничку выводится обрезано...

Могу выложить бекаб базы и полностью код... мож кто разберется...

PM MAIL   Вверх
Mal Hack
Дата 16.12.2005, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



А он у тебя режет на разных картинках одинакого или как?

PM ICQ   Вверх
MaxxSoftware
Дата 19.12.2005, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Такое ощущение что выводит тока N первых пикселей...
тоесть - да, одинаково

Есть предположения какинить?
PM MAIL   Вверх
Mal Hack
Дата 19.12.2005, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Блин... Че же я сразу-то ступил...

Цитата(MaxxSoftware @ 14.12.2005, 06:43)
$x = strlen($image);
header("Content-Length: $x");

Кто тебе сказал, что у тебя картинка - текстовая информация?
strlen тебе все портит.
PM ICQ   Вверх
MaxxSoftware
Дата 20.12.2005, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Без него точно также... к томуже как стрлен влияет на сохранение в файл??? помоему никак...
к томуже оно происходит до определения длинны....

ну ладно, а как правельно то? (если просто убрать strlen и контент-ленг - то результат тотже)
PM MAIL   Вверх
Mal Hack
Дата 20.12.2005, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



На файл не влияет. Другой вопрос в том, что он мог обрезать. Размер по тексту не равен ращзмеру по битам графического файла.

Цитата(MaxxSoftware @ 14.12.2005, 06:43)
$image=mssql_result($res,0,0); // берем переменную из б.д.

Попробуй считать по другому.
PM ICQ   Вверх
MaxxSoftware
Дата 21.12.2005, 06:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Например как?
я вот так вот ышо попробовал

Код

$image = mssql_fetch_assoc($res);
$fil = fopen('c:\\1.jpg',"a");
fwrite($fil,$image['im']);
fclose($fil);
header("Content-type: image/jpg;");
echo $image['im'];


результат тотже
PM MAIL   Вверх
MuToGeN
Дата 21.12.2005, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

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



ИМХО тут копать надо в сторону MSSQL, скорее всего какой-то баг в связи MSSQL <=> PHP. Например, законнектиться к ней не напрямую, а через ODBC. Как вариант, попробывать обновить PHP.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
MaxxSoftware
Дата 21.12.2005, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



пробовал на 4 PHP и на 5,11 результат тотже

Чрез оДБЦ

Код

<?php
$link = odbc_connect("DRIVER={SQL Server};SERVER=localhost;DATABASE=qwe","login","paswd") or die("Не могу соединиться с сервером");
$res= odbc_exec($link,"SELECT im FROM qwe where id=57");
$image = odbc_result($res,1);
header("Content-type: image/jpeg;");
echo $image;
?>


Результат тот же
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




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


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

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