0

現在、サーバーからs3バケットに写真を直接アップロードする完全に機能するスクリプトがあります...

ただし、アップロードされるすべての画像に透かしを追加し始めたいと思います。ご存知のように、S3 へのアップロードでは、実際には一時ファイルとしてサーバーに保存されることはありません。

基本的に、画像を S3 にアップロードしようとしています (既に動作しています) が、その前に、その画像に透かしを追加したい (動作していません)。

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);

これら 2 つの作業スクリプトを 1 つに結合したいと考えています。私はそれが単純だと確信しています。すべてのコードはここにあります。あるプロセスを別のプロセスにリンクする方法がわかりません。これは私がこれを説明できる最高のものです..ありがとう!

4

1 に答える 1