PHP でローカルに保存した後、リモート画像に透かしを追加して保存するにはどうすればよいですか?

PHPz
リリース: 2023-07-12 06:10:01
オリジナル
1602 人が閲覧しました

PHP でリモート画像をローカルに保存した後、透かしを追加して保存するにはどうすればよいですか?

PHP 開発では、リモート イメージをローカルに保存する必要があることがよくあります。場合によっては、著作権を保護したり追加情報を追加したりするために、保存した画像に透かしを追加する必要がある場合もあります。この記事では、PHP を使用してリモートの写真をローカルに保存し、保存された写真にウォーターマークを追加する方法を紹介します。

1. リモートの画像をローカルに保存する

まず、PHP のファイル操作機能を使用して、リモートの画像をローカルに保存する必要があります。以下は簡単なサンプル コードです。

<?php
function saveImage($url, $path)
{
    $ch = curl_init($url); // 初始化curl
    $fp = fopen($path, 'wb'); // 打开文件资源
    curl_setopt($ch, CURLOPT_FILE, $fp); // 设置curl参数,将文件写入fp
    curl_setopt($ch, CURLOPT_HEADER, 0); // 不包含header
    curl_exec($ch); // 执行curl请求
    curl_close($ch); // 关闭curl
    fclose($fp); // 关闭文件资源
}

$url = 'https://example.com/image.jpg'; // 远程图片链接
$path = 'path/to/save/local/image.jpg'; // 保存到本地的路径和文件名
saveImage($url, $path); // 调用函数保存远程图片到本地
?>
ログイン後にコピー

上記のコードでは、リモート イメージの URL と保存パスをパラメータとして受け取る saveImage 関数を定義します。 curl ライブラリは、リモート画像コンテンツをローカル ファイルに書き込むために内部的に使用されます。

2. 保存した画像に透かしを追加する

次に、保存した画像に透かしを追加する必要があります。以下は、GD ライブラリを使用するサンプル コードです。

<?php
function addWatermark($sourcePath, $watermarkPath, $outputPath)
{
    $source = imagecreatefromjpeg($sourcePath); // 打开原始图片
    $watermark = imagecreatefrompng($watermarkPath); // 打开水印图片

    $sourceWidth = imagesx($source); // 原始图片宽度
    $sourceHeight = imagesy($source); // 原始图片高度
    $watermarkWidth = imagesx($watermark); // 水印图片宽度
    $watermarkHeight = imagesy($watermark); // 水印图片高度

    $x = $sourceWidth - $watermarkWidth - 10; // 水印左上角的x坐标
    $y = $sourceHeight - $watermarkHeight - 10; // 水印左上角的y坐标

    imagecopy($source, $watermark, $x, $y, 0, 0, $watermarkWidth, $watermarkHeight); // 将水印图片拷贝到原始图片上

    imagejpeg($source, $outputPath); // 保存带水印的图片

    imagedestroy($source); // 销毁原始图片资源
    imagedestroy($watermark); // 销毁水印图片资源
}

$sourcePath = 'path/to/save/local/image.jpg'; // 保存的图片路径
$watermarkPath = 'path/to/watermark.png'; // 水印图片路径
$outputPath = 'path/to/output/image.jpg'; // 输出带水印图片的路径和文件名
addWatermark($sourcePath, $watermarkPath, $outputPath); // 调用函数添加水印并保存图片
?>
ログイン後にコピー

上記のコードでは、元の画像パス、透かし画像パス、および出力パスを受け入れる addWatermark 関数を定義します。パラメータとしてファイル名を指定します。 GD ライブラリは画像を操作する関数内で使用され、最初に元の画像と透かし入りの画像をリソースとして開き、位置情報に従って透かし入りの画像を元の画像にコピーし、最後に透かし入りの画像を保存します。

概要:

上記の手順により、PHP を使用してリモート画像をローカルに保存し、保存された画像に透かしを追加できます。これにより、著作権を保護し、追加情報を追加するというニーズが満たされます。この記事がお役に立てば幸いです!

以上がPHP でローカルに保存した後、リモート画像に透かしを追加して保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート