2014-12-26 50 views
0

我有一個GAE php腳本,它可以旋轉給定的圖像(存儲在GCS中),然後將其寫入到相同的GCS存儲桶中(全部在同一個雲中平臺項目)。imagejpeg在GCS中導致文件類型'binary/octet-stream'

一切工作正常 - 圖像加載正確,旋轉並保存。問題是,當圖像被保存時,GCS識別它的類型爲binary/octet-stream而不是image/jpeg,這會導致任何公共鏈接自動下載圖像文件,而不是直接在瀏覽器中顯示它。

代碼:

$bucket = 'gs://my-bucket-here/'; 
    $imageRes = imagecreatefromjpeg($bucket . $picName); 

    if ($imageRes) { 
     $rotate = imagerotate($imageRes, 90, 0); 
     imagedestroy($imageRes); 
     imagejpeg($rotate, $bucket . "test.jpg"); 
     imagedestroy($rotate); 
    } 

上什麼導致這個任何提示?我曾考慮過使用Imagick,但它不適用於GAE ...

回答

2

您可以在上下文選項中指定內容類型,在這種情況下,您需要將其設置爲默認選項,因爲無法傳遞上下文到imagejpeg()方法。

$options = [ 
    'gs' => [ 
     'Content-Type' => 'image/jpeg', 
    ], 
]; 

stream_context_set_default($options); 

$bucket = 'gs://my-bucket-here/'; 
$imageRes = imagecreatefromjpeg($bucket . $picName); 

if ($imageRes) { 
    $rotate = imagerotate($imageRes, 90, 0); 
    imagedestroy($imageRes); 
    imagejpeg($rotate, $bucket . "test.jpg"); 
    imagedestroy($rotate); 
} 
+0

謝謝!完美的作品 – Eran

相關問題