2013-02-20 141 views
0

在我們的應用程序中,用戶可以上傳尺寸爲1024 X 768(大約150 KB)的圖像。
當用戶下面的事情上載的圖像發生:圖像上傳管理在php

1)上載臨時目錄
2)圖像裁剪圖像分成四個不同的尺寸。
3)上傳原始圖像及其在amazon s3服務器上的裁剪圖像。

上述過程證明對於用戶來說是耗時的。

使用xdebug進行分析後,似乎有90%的時間在亞馬遜s3上傳圖片。 我使用以下方法給保存圖像在Amazon S3的桶

public function saveInBucket($sourceLoc,$bucketName = '', $destinationLoc = '') {   
    if($bucketName <> '' && $destinationLoc <> '' && $sourceLoc <> '') { 
     $s3 = new AmazonS3(); 
     $response = $s3->create_object($bucketName.'.xyz.com',$destinationLoc, array(
              'contentType' => 'application/force-download', 
              'acl' => AmazonS3::ACL_PUBLIC, 
              'fileUpload' => $sourceLoc 
              ) 
             ); 

     if ((int) $response->isOK()) { 
      return TRUE; 
     } 

     $this->ErrorMessage = 'File upload operation failed,Please try again later'; 
     return FALSE; 
    } 
    return FALSE; 
}  

我也想過直接上傳圖像到Amazon S3的,但我不能這樣做,因爲我也有裁剪圖像分割成4個不同大小
我如何加快或改進圖像管理過程。

回答

1

這發生在我以前。你可以做的是:

當你調整你的形象,你必須轉換爲字符串。 我正在使用WideImage類。

例子:

$image = WideImage::load($_FILES["file"]['tmp_name']); 
    $resized = $image->resize(1024); 
    $data = $resized->asString('jpg'); 

然後當你在亞馬遜上載,你必須用參數,而不是「文件上傳」身體'。

例子:

$response = $s3->create_object($bucketName.'.xyz.com',$destinationLoc, array(
             'contentType' => 'application/force-download', 
             'acl' => AmazonS3::ACL_PUBLIC, 
             'body' => $data 
             ) 
            ); 

我希望幫助。