Мое приложение имеет изображения, отправленные с мобильных устройств, с типом «application / octet-stream» типа контента.
Мне нужно обработать эти изображения с помощью библиотеки GD, а это значит, что мне нужно создать объект изображения из данных.
Как правило, я использую imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif и т. Д. Для обработки файлов, загружаемых из веб-форм, но они, похоже, не работают, когда приходят ко мне в качестве приложения / октетного потока.
Любые идеи о том, как я могу достичь своей цели?
РЕДАКТИРОВАТЬ
Вот код, который я использую для создания идентификатора изображения … мой обработчик отлично работает на моем сайте, единственная разница, которую я могу рассказать между моим сайтом и данными из iOS, – это тип содержимого
public function open_image($path) { # JPEG: $im = @imagecreatefromjpeg($path); if ($im !== false) { $this->image = $im; return $im; } # GIF: $im = @imagecreatefromgif($path); if ($im !== false) { $this->image = $im; return $im; } # PNG: $im = @imagecreatefrompng($path); if ($im !== false) { $this->image = $im; return $im; } $this->error_messages[] = "Please make sure the image is a jpeg, a png, or a gif."; return false; }
Легко 🙂
$image = imagecreatefromstring( $data );
В частности:
$data = file_get_contents($_FILES['myphoto']['tmp_name']); $image = imagecreatefromstring( $data );
Я нашел это в форуме codeigniter способом изменения mime, и он работает, я полагаю, вы можете использовать и для других фреймворков, это ссылка и этот код:
//if mime type is application/octet-stream (psp gives jpegs that type) try to find a more specific mime type $mimetype = strtolower(preg_replace("/^(.+?);.*$/", "\\1", $_FILES['form_field'] ['type'])); //reg exp copied from CIs Upload.php if($mimetype == 'application/octet-stream'){ $finfo = finfo_open(FILEINFO_MIME, '/usr/share/file/magic'); if($finfo){ $_FILES['form_field']['type'] = finfo_file($finfo, $_FILES['form_field']['tmp_name']); finfo_close($finfo); } else echo "finfo_open() returned false"); }
Расширение Fileinfo необходимо установить на сервере.
Это сработало для меня.
вы также можете использовать эту функцию. он не требует никакой другой зависимости. и отлично работают для других типов.
function _getmime($file){ if($info = @getimagesize($file)) { return image_type_to_mime_type($info[2]); } else { return mime_content_type($file); } }