Могу ли я прочитать изображение в GD, не зная его типа? - PullRequest
0 голосов
/ 11 февраля 2011

GD, кажется, имеет различные функции imagecreatefrom_x_, что замечательно, если вы заранее знаете тип изображения.В моей конкретной ситуации нет.Есть ли способ прочитать изображение, не зная типа?

Мой единственный вариант - сохранить его на диск (дорого!), А затем использовать getimagesize (который также предоставляет тип mime) - ноэто приводит к тому, что я читаю изображение дважды - один раз, чтобы определить тип MIME, а затем снова прочитать его в GD.

В качестве альтернативы, можно ли просто рассматривать переменную как файл?как то так:

$image = file_get_contents('http://the.remote.file.com/myfile');

# doesn't work with already read in image ... can I treat this as a file w/o saving it?
$info = getimagesize($image);

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

Вы можете использовать imagecreatefromstring(), что безразлично к фактическому формату файла и лучший вариант, если вы уже прочитали в файле.

Но для практических целей вы должны иметь возможность использовать getimagesize($filename). Вам не нужно читать в файле раньше. Просто используйте имя файла или URL.

print_r(
   getimagesize("http://sstatic.net/stackoverflow/img/sprites.png?v=2")
);
1 голос
/ 11 февраля 2011

Используйте imagecreatefromstring , imagesx и imagesy (последние два, чтобы предотвратить другой запрос, так как это вас беспокоит):

$image = imagecreatefromstring(file_get_contents('http://path/to/image.jpg'));
list($width, $height) = array(imagesx($image), imagesy($image));
...