PHP缩略图生成和图片水印制作

生成缩略图和添加水印是Web开发中经常需要用到的功能。下面是我整理的PHP缩略图生成和图片水印制作的完整攻略。

生成缩略图

1. 安装gd库

gd库是PHP的一个扩展库,它提供了生成缩略图、图片处理等功能。如果服务器中没有安装gd库,需要先进行安装。

2. 获取原图

在代码中获取原图,可以使用PHP的imagecreatefromjpeg(), imagecreatefromgif() 或者 imagecreatefrompng() 函数,根据原图的文件类型来选择处理函数,如下:

$filename="test.jpg";
list($width, $height)=getimagesize($filename);
$src=imagecreatefromjpeg($filename);

这里以jpg图片为例。

3. 调整尺寸

计算出缩略图的宽、高,然后使用imagecreatetruecolor()函数创建一个按比例缩小的图像,最后,使用imagecopyresampled()函数将原图缩小到新的尺寸。

$newwidth=200;
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

最后生成缩略图:

imagejpeg($tmp,"test_thumb.jpg",100);

4. 示例说明

下面是一个详细的生成缩略图示例:

<?php
$filename="test.jpg";
list($width, $height)=getimagesize("$filename");
$src=imagecreatefromjpeg($filename);
$newwidth=200;
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
imagejpeg($tmp,"test_thumb.jpg",100);
imagedestroy($src);
imagedestroy($tmp);
?>

添加水印

在图片上添加水印,在Web开发中也是常用的技术。下面是添加水印的完整攻略。

1. 获取原图像

同样使用imagecreatefromjpeg(), imagecreatefromgif() 或者 imagecreatefrompng() 函数获取要添加水印的原图像。

$filename="test.jpg";
$src=imagecreatefromjpeg($filename);

2. 添加水印

生成水印文字或者图片,然后将其添加到原图上。

添加文字水印

使用ImageColorAllocate()函数设置水印的颜色,然后使用ImageTtfText()函数添加文字水印到原图上。

$text="Mywatermark";
$color=ImageColorAllocate($src,255,255,255);
ImageTtfText($src,20,0,10,30,$color,"arial.ttf",$text);

添加图片水印

使用imagecreatefrompng()或者imagecreatefromgif()函数读取水印图片,然后将其添加到原图上。

$watermark=imagecreatefrompng("watermark.png");
$wm_width=imagesx($watermark);
$wm_height=imagesy($watermark);
$dst_x=($width-$wm_width)/2;
$dst_y=($height-$wm_height)/2;
imagecopy($src,$watermark,$dst_x,$dst_y,0,0,$wm_width,$wm_height);

3. 保存新图片

使用imagejpeg(), imagegif() 或者 imagepng() 函数将新图片保存到服务器上。

imagejpeg($src,"test_watermark.jpg",100);

4. 示例说明

下面是一个详细的添加水印的示例:

<?php
$filename="test.jpg";
list($width, $height)=getimagesize("$filename");
$src=imagecreatefromjpeg($filename);
$text="Mywatermark";
$color=ImageColorAllocate($src,255,255,255);
ImageTtfText($src,20,0,10,30,$color,"arial.ttf",$text);
imagejpeg($src,"test_watermark.jpg",100);
imagedestroy($src);
?>

以上就是生成缩略图和添加水印的完整攻略。希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP缩略图生成和图片水印制作 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 如何导出python安装的所有模块名称和版本号到文件中

    如何导出Python安装的所有模块名称和版本号到文件中 如果你想要导出Python安装的所有模块的名称和版本号到一个文件中,可以按照以下步骤进行操作: 步骤 1:安装 pipreqs pipreqs 是一个用于生成项目所需模块清单的工具。首先,你需要安装 pipreqs。在命令行中运行以下命令: pip install pipreqs 步骤 2:生成模块清单…

    other 2023年8月2日
    00
  • jrebel插件安装配置与破解激活(多方案)详细教程

    JRebel插件安装配置与破解激活(多方案)详细教程 JRebel是一款极其常用的Java热部署插件,可以显著提高开发效率。不过,该插件需要购买才能正常使用。下面是JRebel插件安装、配置和破解激活的多种方案。 方案一:使用激活码 首先从官网下载最新版的JRebel插件,解压到本地。 打开解压后的文件夹,将其中的jrebel.jar和lib文件夹复制到你的…

    其他 2023年3月29日
    00
  • 关于java:stringutils.isnumeric()方法规范在逻辑上正确吗

    StringUtils.isNumeric()方法是Apache Commons Lang库中的一个方法,用于判断字符串是否为数字。该方法的定义如下: public static boolean isNumeric(CharSequence cs) { if (cs == || cs.length() == 0) { return false; } int …

    other 2023年5月8日
    00
  • 详解Linux多线程编程(不限Linux)

    详解Linux多线程编程 Linux是一种非常流行的操作系统,因其良好的多线程支持而在并发编程场景中应用广泛。本篇文章将详细讲解如何在Linux环境下进行多线程编程。 基础知识 在Linux环境下,线程使用pthread库进行创建和控制。该库包含以下头文件: #include <pthread.h> 线程的创建方法如下: int pthread_…

    other 2023年6月27日
    00
  • 分析Swift性能高效的原因

    分析Swift性能高效的原因 Swift语言的优点 静态类型检查 Swift使用静态类型检查,可以在编译代码的时候发现并解决类型错误。这意味着Swift代码中的错误可以在编译之前被发现,避免出现运行时错误,提高了代码的稳定性和效率。 内存管理 Swift内置了ARC(自动引用计数),可以自动跟踪和管理对象的内存,对代码的内存使用进行优化,避免了内存泄漏和对象…

    other 2023年6月26日
    00
  • Win7系统鼠标右键失灵了怎么办?win7系统鼠标右键失灵的解决方法

    Win7系统鼠标右键失灵的解决方法 当鼠标右键失灵的时候,我们可以通过以下步骤来解决这个问题。 步骤一:检查鼠标设置 首先检查鼠标设置是否出现了问题。请按照以下步骤进行检查: 在开始菜单中搜索 “鼠标” 并打开鼠标设置。 点击 “设备设置” 选项卡,在这里你可以找到你的鼠标详细信息。 检查 “鼠标属性” 下的 “右键单击” 设置。确保它被设置为 “右键单击”…

    other 2023年6月27日
    00
  • arcgis10.3安装及破解

    ArcGIS 10.3安装及破解 ArcGIS是一个广泛使用的地理信息系统软件,目前最新版本为ArcGIS 10.8,但是旧版本的ArcGIS 10.3也被广泛应用。在本文中,将介绍ArcGIS 10.3的安装及破解方法。 第一部分:ArcGIS 10.3安装 首先,下载ArcGIS 10.3的安装程序。可以从官方网站或者其他可信赖的软件下载网站下载。下载完…

    其他 2023年3月29日
    00
  • springbootcloud

    Spring Boot 和 Spring Cloud Spring Boot 是一个好用的框架,它可以帮助开发者快速地构建基于 Spring 框架的应用。同时,Spring Cloud 也是一个很强大的框架,它提供了一些在分布式系统开发中非常有用的组件和工具。在本文中,我们将会介绍如何将 Spring Boot 和 Spring Cloud 结合起来使用,构…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部