2014-12-30 6 views
0

그래서 현재 AWS S3를 사용하여 이미지를 업로드하는 업로드 시스템이 있습니다.메모리에서 PHP의 AWS S3에 이미지를 업로드하는 방법은 무엇입니까?

여기에 코드입니다 :이 이미지는 JPEG 또는 PNG 될 수

//Upload image to S3 
$s3 = Aws\S3\S3Client::factory(array('key' => /*mykey*/, 'secret' => /*myskey*/,)); 

try { 
    $s3->putObject(array(
     'Bucket' => "bucketname", 
     'Key' => $file_name, 
     'Body' => fopen(/*filelocation*/, 'r+') 
    )); 
} catch(Exception $e) { 
    //Error 
} 

, 내가 업로드하기 전에 PNG로 변환 할 수 있습니다. 이렇게하려면 내가 사용

//This is simplified, please don't warn about transparency, etc. 
$image = imagecreatetruecolor($width, $height); 
imagecopyresampled($image, $source, 0, 0, 0, 0, etc.); 

그래서 나는 기억이 $image 목적이있다.

로컬로 저장하고 업로드 한 다음 로컬에서 삭제하지 않고이 파일을 S3에 업로드하려고합니다. 이 여분의 단계는 무의미한 것처럼 보입니다. 하지만이 $ 이미지 객체를 직접 업로드하는 방법을 알아낼 수는 없습니다.

이것이 어떻게 수행 될지 아이디어가 있으십니까? fopen() imagecreatetruecolor() 비슷한 유형의 개체를 만들 것이라고 가정하지만 $ 이미지 개체를 전달하는 시도했다 및 작동하지 않습니다 - fopen 함께 로컬로 이미지를 여는 반면).

+0

그것을 시도,하지만 적이 아마도 ([변수로부터 스트림을 생성] http://php.net/manual/ en/function.stream-wrapper-register.php) 스트림을 허용하기 때문에 트릭을 수행합니다. –

답변

2

당신은 output buffering를 사용하여 GD 이미지 자원의 내용을 캡처 할 수 있습니다 :

ob_start(); 
imagepng($image); 
$pngdata = ob_get_clean(); 
관련 문제