2011-05-09 7 views
3

내 응용 프로그램에 콘텐츠 유형 "application/octet-stream"이 포함 된 휴대 기기에서 보낸 이미지가 있습니다.PHP 응용 프로그램/옥텟 스트림에서 이미지 만들기

GD 라이브러리를 사용하여 이러한 이미지를 처리해야합니다. 즉 데이터에서 이미지 개체를 만들 수 있어야합니다.

일반적으로 웹 양식에서 업로드 된 파일을 처리하기 위해 imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif 등을 사용했지만 응용 프로그램/옥텟 스트림으로 나에게 올 때 작동하지 않는 것 같습니다.

내 목표를 달성하는 방법에 대한 아이디어가 있습니까? 여기에 편집

가 내 핸들러 내 사이트를 통해 완벽하게 작동합니다 ... 이미지 식별자를 만드는 데 사용하는 코드입니다, 내 사이트와 아이폰 OS의 데이터 사이에 알 수있는 유일한 차이점은 컨텐츠 -이다

$image = imagecreatefromstring($data); 

특히

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; 
    } 
+1

GD가 데이터를 처리하는 방법에는 MIME 유형이 의미가 없어야합니다. 사용중인 코드 표시 –

+0

+1 사용중인 코드를 표시하십시오. –

+0

나는 거기에 코드를 던져서 고마워. – johnnietheblack

답변

5

쉬운 : 입력 :

+0

HEYAAA는 $ _FILES [ 'myphoto'] [ 'tmp_name']로 간단히 발견되는 $ 데이터입니까? – johnnietheblack

+0

@johnnietheblack - 정확하지는 않지만 충분히 가깝습니다 :'$ image = imagecreatefromstring (file_get_contents ($ _ FILES [ 'myphoto'] [ 'tmp_name'])); ' – Christian

+0

ahh, 그건 의미가 있습니다 ... 그래서 tmp 파일은 기본적으로 안에있는 문자열을 가진 "텍스트 파일"은 무엇입니까? (메신저 데이터 처리 측면에서 분명히 새로운 점이 있습니다.) – johnnietheblack

0

가 나는 CodeIgniter의 포럼에서 마임을 변경하는 방법을이를 발견하고 이것이 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 확장 서버에 설치해야합니다.

그것은 나를 위해 일했습니다.

0

이 기능을 사용할 수도 있습니다. 다른 의존성을 필요로하지 않습니다. 다른 유형에도 완벽하게 작동합니다.

function _getmime($file){ 
    if($info = @getimagesize($file)) { 
     return image_type_to_mime_type($info[2]); 
    } else { 
     return mime_content_type($file); 
    } 
}