2013-03-08 2 views
0

I ток есть полностью функционирующий скрипт, который будет загружать фотографии прямо в мой s3 ведро с моего сервера ...PHP Amazon S3 загрузить С водяным знаком

Однако, я хочу прямо сейчас начать добавлять водяные знаки к каждому изображению, загружаемый Как вы знаете, загрузка на S3 никогда не хранит его на сервере, как временный файл.

В принципе, я пытаюсь загрузить изображение на S3 (который работает уже), но прежде, я хочу добавить водяной знак к этому изображению (не работает).

ЗДЕСЬ РАБОЧИЙ КОД THATS Закачивает файлы на S3 Ковш:

 if (!class_exists('S3'))require_once('S3.php'); 

     //AWS access info 
     if (!defined('awsAccessKey')) define('awsAccessKey', 'BLAHBLAH'); 
     if (!defined('awsSecretKey')) define('awsSecretKey', 'BLAHBLAH'); 

     //instantiate the class 
     $s3 = new S3(awsAccessKey, awsSecretKey); 

     $fileName = $_FILES['theFile']['name']; 
     $fileTempName = $_FILES['theFile']['tmp_name']; 
     $fileSize = $_FILES['theFile']['size']; 
     $fileExt = substr($fileName, strrpos($fileName, '.') + 1); 
     $fileExt = strtolower($fileExt); 

     $custompostid = rand(1000000,9999999); 
     $imageName = $custompostid.".".$fileExt.""; 

     //move the file 
     if ($s3->putObjectFile($fileTempName, "BUCKETNAME", $image, S3::ACL_PUBLIC_READ, array(), $imageType)) { 
     //success 
     } 
     else{ 
     //error 
     } 

НО ПЕРЕД ЗАГРУЗКА ФАЙЛА, я хочу добавить водяной знак на каждое изображение. С ЭТОЙ ФУНКЦИЕЙ:

 // getting the image name from GET variable 
     $image = $_GET['image']; 

     // creating png image of watermark 
     $watermark = imagecreatefrompng('watermark.png'); 

     // getting dimensions of watermark image 
     $watermark_width = imagesx($watermark); 
     $watermark_height = imagesy($watermark); 

     // creting jpg from original image 
     $image_path = '/path/to/image/folder/' . $image; 
     $image = imagecreatefromjpeg($image_path); 
     //something went wrong 
     if ($image === false) { 
      return false; 
     } 
     // getting the dimensions of original image 
     $size = getimagesize($image_path); 
     // placing the watermark 5px from bottom and right 
     $dest_x = $size[0] - $watermark_width - 5; 
     $dest_y = $size[1] - $watermark_height - 5; 
     // blending the images together 
     imagealphablending($image, true); 
     imagealphablending($watermark, true); 
     // creating the new image 
     imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); 
     imagejpeg($image); 
     // destroying and freeing memory 
     imagedestroy($image); 
     imagedestroy($watermark); 

Я хочу объединить эти два рабочих сценария в один. Я уверен, что это просто, весь код здесь, я просто не знаю, как связать один процесс с другим. Это лучшее, что я могу объяснить. Спасибо!

+1

Есть вопрос, чтобы ответить, или, по крайней мере, проблема с код, который вы написали, который вы могли бы описать? –

+0

В основном, я пытаюсь загрузить изображение на S3 (который работает уже), но раньше, я хочу добавить водяной знак к этому изображению (не работает). – Chrisl446

+0

Вам нужно будет уточнить, что не работает, чем «не работает». –

ответ

0

S3 загрузка изображений с Watermark Codeigniter

   $s3_bucket_name = $this->config->item('s3_bucket_name'); 
       $s3_access_key = $this->config->item('s3_access_key'); 
       $s3_secret_key = $this->config->item('s3_secret_key'); 
       include('amazon/s3_config.php'); 
       $uploaddir = "images/"; 
       $actual_image_name = time().'.'.$ext; 
       $newname=$uploaddir.$actual_image_name; 


       if (move_uploaded_file($_FILES['photos']['tmp_name'], $newname)) 
       { 
        $this->watermarkimages($uploaddir,$actual_image_name); 
        $result_image='/'.$newname; 

        if($s3->putObjectFile($newname, $bucket , $actual_image_name, S3::ACL_PUBLIC_READ)) 
        { 
         $s3file='http://'.$bucket.'.s3.amazonaws.com/'.$actual_image_name; 
         mysql_query("INSERT INTO photos(product_image,product_id) VALUES('$s3file','$prd_id')"); 
        } 
        unlink($newname); 
       } 

общественная функция watermarkimages ($ UploadDir, $ имя_образа) {

 $masterURL =$uploaddir.$image_name; 


     $path='images/watermark3.png'; 


       $this->load->library('image_lib');    
       $config1['image_library'] = 'gd2'; 
       $config1['source_image']  = $masterURL; 
       $config1['wm_type']   = 'overlay'; 
       $config1['wm_overlay_path'] = $path; 
       $config1['wm_opacity']  = 100; 
       $config1['wm_vrt_alignment'] = 'top'; 
       $config1['wm_hor_alignment'] = 'right'; 
       $this->image_lib->initialize($config1); 
       $this->image_lib->watermark(); 



}