GD - вклеивание изображения

uncle17


header("Content-type: image/jpeg");
$dst_im=imagecreate(468,60);
$background_color = imagecolorallocate($dst_im, 100, 155, 55);
$src_im=imagecreatefromjpeg("viewimage.php?file=1");
imagecopy($dst_im, $src_im, 150, 0, 0, 0, imagesx($src_im imagesy($src_im imagesx($src_im imagesy($src_im;
imagejpeg($dst_im);

Файл viewimage.php:

$query="SELECT mimeType, fileContents FROM news_files WHERE id=$file";
$result=mysql_query ($query);
$data=mysql_fetch_array($result);
if (!empty($data["fileContents"]
{
header("Content-Type: image/jpeg");
echo $data["fileContents"];
}

Результат - зеленый прямоугольник 468*60.
В чем проблема?
З.Ы. Сам viewimage.php работает прекрасно

Werdna

imagecreatefromjpeg("viewimage.php?file=1");
Йобнулсё? На солнышки пиригрелсё?
Там имя файла в ФС.
Ручками надо скачать, и подгрузить...

uncle17

то бишь надо сделать viewimage2.php, который пишет jpeg в tmp.jpg, потом уже вклеивать его?

stm7884696

а сам viewimage.php нормально картинку возвращает?
если да - сохрани ее на диск и открой одновременно сохраненную на диск и полученную сриптом, да помотри какая разница в заголовках...
+ возможно, функция imagecreatefromjpeg при обращении к файлу не обрабатывает его как пхп, а просто грузит контент, думая, что это картинка...

evgen5555

А что мешает сделать инклудник с процедурой
Image getdbimage
в которой и будет вся лабуда с базой происходить?

uncle17

ХЗ... сделал с тмп-файлом. Получилось

$query="select * from news where is_main=1 limit 0,1";
$result=mysql_query($query);
if($row=mysql_fetch_array($result
{
$q="select * from news_files where is_main=1 and news_id=".$row["id"];
$res=mysql_query($q);
if($r=mysql_fetch_array($res
{
header("Content-type: image/jpeg");
$dst_im=imagecreate(468,60);
$background_color = imagecolorallocate($dst_im, 100, 155, 55);
if (!empty($r["fileContents"]
{
$fp=fopen("tmp.jpg", "w");
fwrite($fp,$r["fileContents"]);
}
$src_im=imagecreatefromjpeg("tmp.jpg");
imagecopy($dst_im, $src_im, 150, 0, 0, 0, imagesx($src_im imagesy($src_im imagesx($src_im imagesy($src_im;
imagejpeg($dst_im);
}
}

Результат тот же. Файл tmp.jpg прекрасно смотрится тем же ирфаном - не бъется, всё ок.

uncle17

э-э-э... не понял

Werdna

Ну я еще раз убедился, что разработчики php -- пидорасы.
Значит так, альтернативная загрузка (не через файл) в gd есть, gdImageCreateFromGifPtr
Но эти пидорасы не встроили в пхп эту функцию. Ладно, тема такая: или грузи и скидывай на диск, а потом грузи, или не еби мозги и напиши на сях маленькую прогу.

stm7884696

1 - закрой файл.
2 - если брать заведомо сохраненный файл, то у тебя gd нормально с ним работает? Все ОК?

uncle17

1. - закрыл
2.

$src_im=imagecreatefromjpeg("tmp.jpg");
header("Content-Type: image/jpeg");
imagejpeg($src_im);

все ОК.

Werdna

 		$background_color = imagecolorallocate($dst_im, 100, 155, 55);		if (!empty($r["fileContents"]		{			$fp=fopen("tmp.jpg", "w");			fwrite($fp,$r["fileContents"]);		} 

Убиваю за такие вещи:
Какого, спрашивается, хуя, ты пишешь в один и тот же файл? А если 10 скриптов туда писать будут?
Какого хуя не лочишь?
Какого хуя fopen на каждый чанк? открыл -- и пиши, нехуй 10 раз открывать!
И какого хуя ты пишешь в дефолтный каталог, а не в /tmp?

uncle17

йопт... потому что это дописывается потом. Будь спокойней. Сейчас мне надо, чтоб рисунок делался, а не чтоб файл лочился

stm7884696

пианист, не бузи....
вопрос не в оптимизации, а в разовом запуске, и что бы заработало...
Единственно - это то, что реально может не быть прав на что либо в текущей директории....
А вообще - полезно включать вывод всех ошибок и нотисов.

Werdna

Да я не бужу, просто советую сразу писать на си...

evgen5555

Возражаю, хуле
Ошибки править сложно.

uncle17

ты хостеру сам поддержку сей поставишь?
З.Ы. А мне курсы по сям ты оплатишь?

Barbie29

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

uncle17

фтопку. Лучше по сути скажи

Werdna

Федь, на курсах изучают "курс кройки и шитья", а си изучают самостоятельно
Раз хостинг дает пхп, они дадут выполнять бинарь. Более того, они дадут скорее всего его сделать fastcgiшным.
Если не дадут -- сохраняй в /tmp, но, блядь, пиши сразу нормально. И думай!

uncle17

флудим-с...
Еще раз повторяю - вопрос в работе imagecopyresampled

Barbie29

ну я бы для картинки имени брал пид процесса или переменная rundom или тайм+рандом.
Оставить комментарий
Имя или ник:
Комментарий: