Эта тема на forum.dklab.ru


symbiot: Изображения в БД.
Здравствуйте!
Я сейчас пишу топ гильдий для игрового онлайн сервера.
И столкнулся с такой проблемой. Не знаю как вытащить эмблему из БД. Я знаю, что хранить изображения в БД не стоит. Но в этом случае изображения имеют не большой размер.
Мне нужно вытащить эти эмблемы и динамически их сформировать соответственно каждой гильдии.
Мне уже помогли немного, но у меня всё-равно пока ничего не получается.
Вот код:

<?php
include('config.php');

$id = $_GET['guild'];
$sql = "SELECT * FROM `guild` WHERE `guild_id` = '$id'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$emblem= $row['emblem_data'];
if ($emblem=="")
{
header("Location: emblem_0.bmp");
}
$emblem=@gzuncompress(pack('H*',$emblem));
if (!headers_sent())
{
header("Content-Type: image/bitmap");
echo $emblem;
exit;
}
else
{
echo "Error";
exit;
}
?>
[/CODE:1:383d579929]
Скрипт выдает ошибку: Error. (Вторая ветка оператора if).
Очень прошу помочь.
Или дайте, пожалуйста, какой-либо линк на ресурс посвященный этой теме.
http://xpoint.ru/forums/thread/13645.xhtml - Здесь я уже был.
Но там в основном теоретические сведения.
Maus:
symbiot
эмблему в Ragnarok Online можно вытащить в файл так:

$emblem=@gzuncompress(pack('H*',$row['emblem_data']));
if(!$emblem)
{
echo "unzip: {$row['guild_id']}\n";
continue;
}
$im=ImageCreateFromBMP($emblem);
$filename = $pre_path.'/'.$row['guild_id'].'.png';
$st = imagepng($im, $filename);
if(!$st) echo "Fail: {$row['guild_id']}\n";
Функцию ImageCreateFromBMP() можно найти тут: http://ru2.php.net/manual/en/function.imagecreate.php#53879 , только её нужно малость переделать - выкинуть fopen .
symbiot:
Maus
Спасибо большое!
Только есть вопрос...
Этот код, который ты дал, это всё что нужно? Или надо его доработать?
Если я правильно понял, то у меня получилось следующее:

<?php
include('config.php');

$id = $_GET['guild'];
$sql = "SELECT * FROM `guild` WHERE `guild_id` = '$id'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$emblem= $row['emblem_data'];
$emblem=@gzuncompress(pack('H*',$row['emblem_data']));
if(!$emblem)
{
echo "unzip: {$row['guild_id']}\n";
continue;
}
$im=ImageCreateFromBMP($emblem);
$filename = $pre_path.'/'.$row['guild_id'].'.png';
$st = imagepng($im, $filename);
if(!$st) echo "Fail: {$row['guild_id']}\n";
?>

Но появилась ошибка:
Fatal error: Call to undefined function: imagecreatefrombmp()
Юрий Насретдинов:
symbiot
Ну, функцию createfrombmp() надо было скопировать с той ссылки, которую Вам дал уважаемый Maus
symbiot:
Понял. =)
Только можно объяснить, что значит выкинуть fopen. Я понял, что надо выкинуть эту функцию, но на что её заменить? Как тогда без неё?
Извините, но я не особо в php шарю.
Постараюсь разобраться...
Maus:
Только можно объяснить, что значит выкинуть fopen
Вы на содержимое функции гляньте. Там в первых строках - fopen() . Потому что автор писал её в расчете на то, что она принимает имя файла с bmp-картинкой, считывает его содержимое, преобразует и сохраняет в png-файл. А у нас содержимое уже считано. В общем, посмотрите на код - там всё очевидно.
bæv:
symbiot, Вы когда успели с Maus'ом перейти «на ты»?
http://forum.dklab.ru/about/todo/PravilaEtogoForuma-ProchitayteObyazatelno.html

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=

Фактически, топик к MySQL отношения не имеет.
bæv:
Перенесено из форума: SQL и PHP :: SQL.
Перенесено в форум: Разное :: PHP.

Эта тема на forum.dklab.ru