我的应用程序是从内容类型为“application / octet-stream”的移动设备发送给它的图像。
我需要使用GD库处理这些图像,这意味着我需要能够从数据中创建图像对象。
通常情况下,我一直在使用imagecreatefromjpeg,imagecreatefrompng,imagecreatefromgif等来处理从Web表单上传的文件,但是当我作为application / octet-stream来找我时这些似乎不起作用。
关于如何实现目标的任何想法?
修改
以下是我用来创建图片标识符的代码...我的处理程序在我的网站中运行得很好,我在网站和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;
}
答案 0 :(得分:5)
简单:)
$image = imagecreatefromstring( $data );
具体做法是:
$data = file_get_contents($_FILES['myphoto']['tmp_name']);
$image = imagecreatefromstring( $data );
答案 1 :(得分:0)
我在codeigniter论坛中发现了一个改变mime的方法,它可以工作,我想你也可以用于其他框架,这是link,这就是代码:
//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扩展。
它对我有用。
答案 2 :(得分:0)
您也可以使用此功能。它不需要任何其他依赖。并且也适用于其他类型。
function _getmime($file){
if($info = @getimagesize($file)) {
return image_type_to_mime_type($info[2]);
} else {
return mime_content_type($file);
}
}