Php: конвертировать BLOB в файл изображения - PullRequest
10 голосов
/ 24 мая 2011

Возможно ли это с помощью php и базы данных mysql для преобразования большого двоичного объекта в файл изображения?

Ответы [ 4 ]

8 голосов
/ 08 июня 2011

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

Обратите внимание, что echo image- это просто трюк, который я использую для отображения нескольких изображений из одного и того же сценария php при циклическом просмотре ресурса результатов MySQL.Вы можете также выводить через header (), как показывал @NAVEED.

GD:

$image = imagecreatefromstring($blob); 

ob_start(); //You could also just output the $image via header() and bypass this buffer capture.
imagejpeg($image, null, 80);
$data = ob_get_contents();
ob_end_clean();
echo '<img src="data:image/jpg;base64,' .  base64_encode($data)  . '" />';

ImageMagick (iMagick):

$image = new Imagick();
$image->readimageblob($blob);
echo '<img src="data:image/png;base64,' .  base64_encode($image->getimageblob())  . '" />';

GraphicsMagick (gMagick):

$image = new Gmagick();
$image->readimageblob($blob);
echo '<img src="data:image/png;base64,' .  base64_encode($image->getimageblob())  . '" />';
5 голосов
/ 24 мая 2011

Если большой двоичный объект содержит двоичные данные изображения (в распознаваемом формате, например tiff, png, jpeg и т. Д.), Возьмите содержимое большого двоичного объекта, запишите его в файл и вуаля ... вы получили изображение.

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

3 голосов
/ 03 января 2012

В моем случае мне пришлось использовать base64_decode для правильного преобразования изображений BLOB в файл.

1 голос
/ 24 мая 2011

Если вы храните изображения в поле Blob таблицы MySql и хотите получить эти изображения, тогда эта статья полезна для вас:

Посмотрите на следующую часть статьи сверху:

<?php
if(isset($_REQUEST['id']))
{
   // get the file with the id from database
      include "dbconfig.php";
      $dbconn = mysql_connect($dbhost, $dbusr, $dbpass) or die("Error Occurred-".mysql_error());
      mysql_select_db($dbname, $dbconn) or die("Unable to select database");

      $id    = $_ REQUEST ['id'];
      $query = "SELECT `img_name`, `img_type`, `img_size`, `img_data`
                       FROM img_tbl WHERE id = ‘$id’";

      $result = mysql_query($query) or die(mysql_error());
      list($name, $type, $size, $content) = mysql_fetch_array($result);

      header("Content-length: $size");
      header("Content-type: $type");
      print $content;

      mysql_close($dbconn);
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...