как определить тип изображения - PullRequest
1 голос
/ 06 июля 2011

У меня есть изображение из поля базы данных blob.Есть ли способ проверить тип MIME поля без сохранения?

getimagesize() and mime_content_type()

требует имя файла ...

я хочу сделать что-то вроде этого:

<img \n" . 'src="data:image/gif;base64,' . $base64 .
          '" alt="base64 img" width="80" height="15" />

Ответы [ 4 ]

3 голосов
/ 06 июля 2011

Когда вы вставляете данные файла в свою базу данных, вам действительно следует сохранить тип MIME вместе с ним. Обнаружение не является идеальным и, по крайней мере, медленнее.

В любом случае:

$mime_type = finfo_buffer($f, $imgdata, FILEINFO_MIME_TYPE);

От: Определение типа изображения из строки base64 в PHP

1 голос
/ 06 июля 2011

Вы можете проверить первые несколько байтов в двоичном файле, чтобы определить это.Это называется проверкой «подписи файла».

Вот несколько полезных ссылок, которые я использовал для написания собственного кода, который делает это:

0 голосов
/ 06 июля 2011

Это возможно, но вам нужно что-то знать о типах изображений, с которыми вы можете столкнуться.Например, GIF говорит «GIF» в первых трех байтах данных.

http://www.onicos.com/staff/iz/formats/gif.html

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

0 голосов
/ 06 июля 2011

Насколько я знаю, вы не можете этого сделать. Именно по этой причине вы всегда должны хранить тип изображения в базе данных вместе с данными изображения BLOB-объекта.

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

header ("Content-type: image/jpeg");
$sql = "SELECT blobfield FROM table WHERE ...";
$result = mysql_query($sql, $conn);
$img = mysql_fetch_row($result);
print $img[0];
...