duanke2503 2019-04-03 04:55
浏览 60

如何使用CodeIgniter将水印添加到存储在S3存储桶中的图像中?

I don't want to download images to the local, and I want add logo as watermark in image, that images stored in S3 bucket.

I do not want do this watermark process in local system, I don't know how to do this. This is my code in CodeIgniter

public function GetRendomImgForMaxico()
    {
        /* S3 server :- get 5 order and one image from each orders */
         $getRendomLatestOrder = $this->db->query("select invoice from ord_order
            left join users
            on users.id = ord_order.userId and users.region_id < 36
            where ord_order.payment_status = 'P' AND ord_order.num_day_shoots > 0
            order by ord_order.id desc limit 5");
        $latestImgs = $getRendomLatestOrder->result_array();

        $this->load->library('aws_sdk');
        foreach ($latestImgs as $latestImg) {
            $response = $this->aws_sdk->listObjects(
                array(
                    'Bucket' => $this->bucket_name, 
                    'MaxKeys' => 1000, 
                    'Prefix' => $this->order_directory.'ORD_'.$latestImg['invoice'].'/MLS/'
                )
            );
            $image = $response->getPath('Contents');
            $images[] = end($image);
        }
        $urls = array_column($images, 'Key');
        foreach($urls as $key=>$url) {
            $urls[$key] = 'https://s3.amazonaws.com/BUCKETNAME/'.$url;
            $result = $this->aws_sdk->copyObject([
                'Bucket' => $this->config->item('bucketname'),
                'CopySource' => "/".$this->config->item('bucketname')."/".$url,
                'Key' => 'recent_shoots/'.$url,
                'ACL' => 'public-read']
            )->toArray();

            /** Watermark add from here */
            $masterURL = 'https://s3.amazonaws.com/BUCKETNAME/recent_shoots/'.$url;
            $path='https://s3.amazonaws.com/BUCKETNAME/recent_shoots/logo/logo.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();
            die();
        }
    }
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 微信小程序协议怎么写
    • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
    • ¥20 怎么用dlib库的算法识别小麦病虫害
    • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
    • ¥15 java写代码遇到问题,求帮助
    • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
    • ¥15 有了解d3和topogram.js库的吗?有偿请教
    • ¥100 任意维数的K均值聚类
    • ¥15 stamps做sbas-insar,时序沉降图怎么画
    • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看