2015-08-13 36 views
-1

對於我的網站,我想使用API​​存儲使用AWS S3服務的所有圖像。如何使用AWS S3進行圖像處理(PHP)

如何通過API/SDK

1)如何使用API​​(從我的網站)上傳圖片/文件不同的文件夾中做的事情。

2)如何實時調整/裁剪圖像。例如50x50像素,250x250像素。

3)強制下載。

謝謝

+0

假設您已經瀏覽了適用於PHP的AWS開發工具包,您到目前爲止還有什麼?至於調整大小和裁剪,我相信你的應用程序的服務器應該照顧,然後發送到你的S3存儲桶。 – flauntster

回答

0

你的問題有點含糊,所以答案不能確切。我會給一些建議或圖書館開始:

  1. 如何上傳圖像/文件在不同的文件夾使用API​​(從我的網站)。

這個庫應該是一個不錯的地方開始S3和文件工作: https://github.com/tpyo/amazon-s3-php-class

  • 如何調整上飛/裁剪圖像。例如50x50像素,250x250像素。
  • 這應該做的伎倆:https://github.com/eventviva/php-image-resize 或者你可以嘗試PHP Imagick:http://php.net/manual/en/book.imagick.php

  • 強制下載。
  • #2已經有答案給你: How to force file download with PHP

    希望這有助於讓你開始。

    +0

    第一和第三個答案都很好。 第二>調整大小/作物是爲遠程圖像(asw主機)。例如... asw.com/abc.jpg?h=200&w=200&q=100 –

    +0

    您可以使用s3庫來獲取對象S3 :: getObject($ bucketName,$ uploadName),然後使用圖像庫 – eldblz

    3

    我不認爲AWS有一個內置功能來調整S3中存儲的圖像的大小。正如提到的eldblz,你必須自己調整大小。你可以使用S3流包裝器。

    的S3流包裝是相當驚人的:http://docs.aws.amazon.com/aws-sdk-php/v2/guide/feature-s3-stream-wrapper.html

    這將允許您使用內置的file_get_contents一樣和file_put_contents PHP函數。

    1. 獲取原始文件的細節:

      # If you have stream wrapper enabled, 
      # getimagesize will get information from the S3 
      # you have to pass the S3 URI though 
      list($width, $height) = getimagesize('s3://bucket/key'); 
      
      # making the new image 50x50 
      $new_width = 50; 
      $new_height = 50; 
      
      $new_image = imagecreatetruecolor($new_width, $new_height); 
      
    2. 獲取具有的file_get_contents圖像數據(或FOPEN):

      $data = file_get_contents('s3://bucket/key'); 
      
    3. 創建從數據的圖像資源和調整:

      $source = imagecreatefromstring($data); 
      
      # Resize 
      imagecopyresized($new_image, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
      
    4. 輸出:

      header('Content-Type: image/jpeg'); 
      imagejpeg($thumb); 
      

    希望這有助於!