Maison  >  Article  >  développement back-end  >  Comment ajouter un filigrane et enregistrer des images distantes après les avoir enregistrées localement en PHP ?

Comment ajouter un filigrane et enregistrer des images distantes après les avoir enregistrées localement en PHP ?

PHPz
PHPzoriginal
2023-07-11 23:48:051536parcourir

Comment ajouter un filigrane et enregistrer une image distante après l'avoir enregistrée localement en PHP ?

Dans le développement PHP, nous rencontrons souvent le besoin de sauvegarder localement des images distantes. Parfois, nous pouvons également avoir besoin d'ajouter un filigrane à l'image enregistrée pour protéger les droits d'auteur ou ajouter des informations supplémentaires. Cet article explique comment utiliser PHP pour enregistrer des images distantes en local et ajouter des filigranes aux images enregistrées.

1. Enregistrer les images distantes en local

Tout d'abord, nous devons utiliser la fonction d'opération de fichier de PHP pour enregistrer les images distantes en local. Voici un exemple de code simple :

<?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); // 调用函数保存远程图片到本地
?>

Dans le code ci-dessus, nous définissons une fonction saveImage qui accepte l'URL et enregistre le chemin de l'image distante en tant que paramètres. La fonction utilise la bibliothèque curl en interne pour écrire le contenu de l'image distante dans le fichier local. saveImage函数,接受远程图片的URL和保存路径作为参数。函数内部使用curl库将远程图片内容写入本地文件。

二、添加水印到保存的图片

接下来,我们需要在保存的图片上添加水印。下面是一个使用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

2. Ajouter un filigrane à l'image enregistrée

Ensuite, nous devons ajouter un filigrane à l'image enregistrée. Voici un exemple de code utilisant la bibliothèque GD :

rrreee

Dans le code ci-dessus, nous définissons une fonction addWatermark qui accepte le chemin de l'image d'origine, le chemin de l'image du filigrane, ainsi que le chemin de sortie et le nom du fichier. comme paramètres. La bibliothèque GD est utilisée en interne pour exploiter l'image. Tout d'abord, l'image originale et l'image filigranée sont ouvertes en tant que ressources, puis l'image filigranée est copiée sur l'image originale en fonction des informations d'emplacement, et enfin l'image filigranée est enregistrée. 🎜🎜Résumé : 🎜🎜Grâce aux étapes ci-dessus, nous pouvons utiliser PHP pour enregistrer des images distantes localement et ajouter des filigranes aux images enregistrées. Cela répond à notre besoin de protéger les droits d’auteur et d’ajouter des informations supplémentaires. J'espère que cet article vous sera utile ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn