HTACCESS 配合 PHP 给图片加上水印

2023-12-14 03:32

本文主要是介绍HTACCESS 配合 PHP 给图片加上水印,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用apache的.htaccess、php做wrapper来给图片加上水印
首先在要加水印图片的目录,例如/var/www/html/pic目录下写一个.htacess文件

AddHandler watermarked .jpg
AddHandler watermarked .jpeg
AddHandler watermarked .gif
AddHandler watermarked .png
Action watermarked /watermark/wrapper.php
这样将所有jpg/gif/png文件请求forward到/watermark/wrapper.php。由于用到了AddHandle,需要在apache的配置文件httpd.conf里相应目录的AllowOverride一项,允许FileInfo,例如
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride FileInfo
Order allow,deny
Allow from all
</Directory>
然后在/var/www/html下建立watermark目录,写wrapper.php,内容如下

<?php

$watermark
= "watermark.png";
$image = $_SERVER["PATH_TRANSLATED"];

if (empty(
$image)) die();

if (!
file_exists($image)) {
   
header("404 Not Found");
   echo
"File Not Found."; die();
}

$outputType = getFileType($image);

watermark($image, $watermark, $outputType);

/**
   Outputs the image $source with $watermark in the lower right corner.
   @param $source the source image
   @param $watermark the watermark to apply
   @param $outputType the type to output as (png, jpg, gif, etc.)
                      defaults to the image type of $source if left blank
*/
function watermark($source, $watermark, $outputType="") {
   
$sourceType = getFileType($source);
   
$watermarkType = getFileType($watermark);

   if (empty(
$outputType)) $outputType = $sourceType;
   if (
$outputType == "gif") $outputType = "png"; // Okay to remove after July 2004
   
header("Content-type:image/$outputType");

   
// We're only looking at the file name, not the directory name
   
$fileName = basename($source);

   
// Match dots "."
   
preg_match_all("/(.)/", $fileName, $dots);

   
// We only care about match #1
   
$dots = $dots[1];

   if (
count($dots) > 1) {
      
// More than one dot, so don't do watermarking

      
$fp = fopen($source, "rb");
      
$contents = fread($fp, filesize($source));
      
fclose($fp);
      echo
$contents;
   }

   else {

      
// Continue with watermarking

      // Derive function names
      
$createSource = "ImageCreateFrom".strtoupper($sourceType);
      
$showImage = "Image".strtoupper($outputType);
      
$createWatermark = "ImageCreateFrom".strtoupper($watermarkType);

      
// Load original and watermark to memory
      
$output = $createSource($source);
      
$logo = $createWatermark($watermark);
      
ImageAlphaBlending($output, true);

      
// Find proper coordinates so watermark will be in the lower right corner
      
$x = ImageSX($output) - ImageSX($logo);
      
$y = ImageSY($output) - ImageSY($logo);

      
// Display
      
ImageCopy($output, $logo, $x, $y, 0, 0, ImageSX($logo), ImageSY($logo));
      
$showImage($output);

      
// Purge
      
ImageDestroy($output);
      
ImageDestroy($logo);
   }
}

function
getFileType($string) {
   
$type = strtolower(eregi_replace("^(.*).","",$string));
   if (
$type == "jpg") $type = "jpeg";
   return
$type;
}
?>
要加上去的图片 watermark.png也放在该目录下,也可以在别的目录,但是需要修改$watermark这个变量。然后用浏览器访问pic下的一个图片看看是不是加上了水印:),缺省是加在右下角,要改成别的方式得改改这个php文件。
这样原图可以没有水印的,只是在被请求的时候再加上水印,另外可以再wrapper.php进行一些判断,比如判断HTTP referer (php的变量是$_SERVER["HTTP_REFERER"])看请求是否来自本服务器。
参考连接:http://www.webpronews.com/webdevelopment/basicdevelopment/wpn-37-20040429HTACCESSWrapperswithPHP.html
这个里面还讲到用.htaccess和php来添加头/尾文件,提供个人主页服务的跳转之前输出的东西应该也是用类似的技术实现的吧

这篇关于HTACCESS 配合 PHP 给图片加上水印的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/490988

相关文章

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过