您的当前位置:首页>全部文章>文章详情

【PHP】php图像处理库(intervention/image)

CrazyPanda发表于:2024-03-25 20:17:32浏览:333次TAG:

Intervention Image 是一个开源的 PHP 图像处理和操作 库。它提供了一个更简单也更优雅的方式来创建/编辑/组合图像,并且支持最常见的两个图像处理库 GD Library 和 Imagick 。

它的让PHP处理图片的代码,变得更简单,并且更有可读性,更容易理解。无论是我们希望创建图像缩略图,增加水印,给大图片转码压缩,他都可以让我们的代码更少,更具有可读性。

官网

http://image.intervention.io

安装

composer require intervention/image

用法

//导入autoload.php自动加载
require '../vendor/autoload.php';

//导入ImageManager类
use Intervention\Image\ImageManager;

//生成ImageManager对象
$manager = new ImageManager();

//创建新的图像资源
$img = $manager->make('image1.jpeg');

//调整当前图像大小
$img->resize(400,400);

//保存生成新图片
$image->save('2.jpg');

接口方法

创建新的图像资源
//创建新的图像资源
$img = $manager->make('image1.jpeg');
创建画布资源
//创建画布资源
$img = $manager->canvas(500, 500, '#fff');
操作图片
//调整当前图像大小
$img->resize(400,400);

//模糊效果 0-100 越大越模糊
$img->blur(80);

//图片亮度调节 -100至100 暗>亮
$img->brightness(-80);


//图片的三原色调整(red,green,blue)-100 至 100
$img->colorize(-50, 50, -50);

//图片对比度调整(-100 至 100)
$img->contrast(10);

//图片裁剪(x,y左边起点,width,height)
$img->crop(200, 200, 10, 10);

//水平翻转和垂直翻转
$img->flip('h');
$img->flip('v');


//填充颜色或图片
$img->fill('#cccccc');
$img->fill('walter.jpeg');


//按比例裁剪并重新设置宽高
$img->fit(200, 100);
$img->fit(200);

//图片gamma 光照效果调整
$img->gamma(20);

//图片灰色调
$img->greyscale();

//将当前图像调整为新高度,宽度比例缩放
$img->heighten(400);

//按width比例裁剪
$img->widen(300);

//插入其他图片
$img->insert('walter.jpeg');

//插入调整后的图片
$watermark = $manager->make('walter.jpeg')->resize(50,50)->opacity(20);
$img->insert($watermark, 'bottom-right',10,10);

//图片反色调整
$img->invert();

//设置最大颜色数
$img->limitColors(50, '#ff9900');

//图像的不透明度
$img->opacity(50);

//像素化图像(马赛克效果)
$img->pixelate(5);

//旋转图片
$img->rotate(-45);

//锐化图片 0-100
$img->sharpen(90);
画各种图形
//绘制单个像素
$img->pixel('#000000', 10, 10);

//画线
$img->line(10, 10, 200, 200, function ($draw) {
    $draw->color('#000000');
});

//画圆形
$img->circle(100, 200, 200, function ($draw) {
    $draw->background('#000033');//背景颜色
    $draw->border(5, '#000');//边线大小和颜色
});

//画椭圆
$img->ellipse(100, 40, 100, 100, function ($draw) {
    $draw->background('#0000ff');//背景颜色
    $draw->border(1, '#ff0000');//边线大小和颜色
});

//画长方形
$img->rectangle(5, 5, 195, 195, function ($draw) {
    $draw->background('rgba(255, 255, 255, 0.5)');
    $draw->border(2, '#000');
});

//画多边形
$points = array(
    40,  50,  // Point 1 (x, y)
    20,  240, // Point 2 (x, y)
    60,  60,  // Point 3 (x, y)
    240, 20,  // Point 4 (x, y)
    50,  40,  // Point 5 (x, y)
    10,  10   // Point 6 (x, y)
);
$img->polygon($points, function ($draw) {
    $draw->background('#0000ff');
    $draw->border(1, '#ff0000');
});
获取图片相关信息
//获取图片宽度
$width = $img->width();
var_dump($width);exit;

//获取MIME类型
$mime = $img->mime();
var_dump($mime);exit;

//从当前图像读取IPTC元数据
$iptc = $img->iptc();
echo "<pre>";
var_dump($iptc);exit;

//获取图片高度
$height = $img->height();
var_dump($height);exit;

//图片编码(jpg,png,gif,data-url等)
$data = (string) $img->encode('data-url');
$html =<<<EOF
<img src="{$data}"/>
EOF;
echo $html;

//读取图片信息
$data = $img->exif();
echo "<pre>";
var_dump($data);

//获取图片大小
$size = $img->filesize();
var_dump($size);
int(719040)
输出图片资源
//手动输出到浏览器
header('Content-Type: image/jpeg');
echo $img->encode('jpeg');

//HTTP响应,输出到浏览器
echo $img->response();

//保存生成新图片
$image->save('2.jpg');
其他操作
//创建编码图像流
$stream = $img->stream('jpg', 60);
var_dump($stream);exit;


//将文本写入图像
$img->text('The quick brown fox jumps over the lazy dog.',50,50);
$text = "Write text to an image";
$img->text($text, 200, 100, function($font) {
    $font->file("./Lato-Light.ttf");
    $font->size(24);
    $font->color('#fdf6e3');
    $font->align('center');
    $font->valign('top');
    $font->angle(45);
});



//释放内存
$img->destroy();


原文链接https://www.cnblogs.com/hu308830232/p/14948238.html

猜你喜欢

【PHP】php中标识符允许出现的符号有哪些
php中标识符允许出现的符号有字母、数字、下划线和中文字符。详细介绍:1、字母和数字,标识符可以由字母和数字组成,它们可以以字母开头,后面可以跟随任意数量的字母、数字或下划线;2、下划线,标识符可以包含下划线,但不能以下划线开头;3、中文字符,从PHP 7.2版本开始,允许在标识符中使用中文字符,$中文变量、function中文函数()等都是合法的标识符等等。本教程操作系统:windows10系统、PHP 8.1.3版本、DELL G3电脑。在PHP中,标识符是用来标识变量、函数、类、
发表于:2023-12-06 浏览:510 TAG:
【PHP】php8为什么性能高
hp8性能高的原因:php8引入了JIT编译器、优化了函数调用、数组操作、引入了新的数据结构和算法,并修复和优化了一些内部实现细节等等。详细介绍:1、引入了Just-In-Time(JIT)编译器,JIT编译器是一种动态编译技术,它将PHP代码转换为机器码,以便更高效地执行;2、优化了函数调用,在PHP8中,通过引入函数调用的内联缓存(IC)机制,可以避免昂贵的开销等等。本教程操作系统:windows10系统、PHP8版本、Dell G3电脑。PHP是一种广泛使用的服务器端脚本语言,用于开发W
发表于:2023-12-30 浏览:321 TAG:
【PHP】centos7安装php7环境
&nbsp; &nbsp; &nbsp; &nbsp; CentOS 7系统是一种广泛使用的服务器操作系统,其稳定性和安全性使其成为在服务器环境中使用的首选操作系统之一。而PHP 7则是一种广泛使用的高性能服务器端脚本语言,许多网站和应用程序都是使用PHP编写的。在这篇文章中,我们将介绍如何在CentOS 7系统上安装PHP 7环境。第一步:更新yum源在开始安装之前,我们需要更新系统的yum源。执行以下命令:sudo&nbsp;yum&nbsp;update登录后复制这将更新系统的yu
发表于:2023-12-19 浏览:338 TAG:
【PHP】php代码规范七大原则
hp代码规范七大原则包括一致性、可读性、简洁性、可复用性、可测试性、安全性和性能。详细介绍:1、一致性,代码应该保持一致性,即在整个代码库中使用相同的命名规范、缩进风格、代码注释等,这样可以使团队成员更容易理解和阅读代码,减少出错和混淆的可能性;2、可读性,代码应该易于阅读和理解,为了提高可读性,可以使用有意义的变量和函数命名,避免使用过于复杂的表达式和嵌套结构等等。本教程操作系统:windows10系统、PHP 8.1.3版本、DELL G3电脑。在PHP开发中,遵循良好的代码规范是非常重要
发表于:2024-03-17 浏览:307 TAG:
【PHP】PHP8.1新特性大讲解之Enums枚举
PHP 8.1:枚举它们终于来了——PHP 8.1中将添加对枚举的内置支持!有些人可能认为他们早就应该这样做了,但你没有听到我的抱怨;我很高兴他们做到了!这篇文章致力于深入研究新添加的功能。像往常一样,在我的 PHP 功能帖子中,我们首先对枚举的外观进行高级概述:enum&nbsp;Status { &nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;DRAFT; &nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;PUBLISHED; &nbsp;&nbsp;&amp;
发表于:2024-01-03 浏览:463 TAG:
【PHP】php数组合并有几种方法
php数组合并有四种方法。详细介绍:1、使用array_merge()函数,接受多个数组作为参数,并返回一个合并后的数组;2、使用&quot;+&quot;运算符,将两个数组合并为一个新数组,并返回结果;3、使用array_merge_recursive()函数,用于合并两个或多个数组,并且可以处理多维数组的合并;4、使用array_replace()函数等等。本教程操作环境:windows10系统、php8.1.3版本、DELL G3电脑。在PHP中,数组合并是一种常见的操作,它可以
发表于:2023-12-06 浏览:406 TAG:
【PHP】php如何创建关联数组表格
随着互联网技术的不断发展,Web 应用程序的开发变得越来越重要。其中,关联数组表格是 Web 应用程序中常用的一种数据结构,它可以将数据按照列与行的方式分组存储,并且可以方便地在前端界面中进行展示。那么,如何使用 PHP 创建关联数组表格呢?本文将为您一一介绍。一、创建关联数组在 PHP 中,我们可以使用关联数组来存储数据,关联数组是以字符串为索引的数组。相较于索引数组(使用数字作为索引的数组),关联数组更加灵活,可以通过索引来直接访问每个元素。下面的示例代码创建了一个关联数组,包含了
发表于:2023-12-18 浏览:331 TAG:
【PHP】php中魔术常量有哪些
常用的魔术常量有:1、LINE,当前行号的数字表示;2、FILE,当前文件的完整路径和文件名;3、DIR,当前文件所在的目录;4、FUNCTION,当前函数的名称;5、CLASS,当前类的名称;6、TRAIT,当前特性的名称;7、METHOD,当前方法的名称;8、NAMESPACE,当前命名空间的名称等等。【程序员必备开发工具推荐】Apifox一款免费API管理工具Apifox = Postman + Swagger + Mock + JMeter本教程操作系统:windows10系统
发表于:2023-12-06 浏览:374 TAG:
【PHP】php魔术常量、超全局变量和魔术方法汇总
一、魔术常量(8个)PHP中的常量大部分都是不变的,但是有8个常量会随着他们所在代码位置的变化而变化,这8个常量被称为魔术常量。LINE:文件中 本常量所在行的 行号(即处于第几行)。FELE:本文件的完整路径和文件名。如果被用在 被包含文件中,则返回被包含文件的文件名。本常量总是包含一个绝对路径(如果是符号链接,则是解析后的绝对路径)DIR:本文件所在目录。如果被用在 被包含文件中,则返回被包含文件的所在目录。它等价于 dirname(FILE)。除非是根目录,否则目录名中不包含末尾的斜杠。F
发表于:2024-07-17 浏览:258 TAG:
【PHP】TP5使用TaskScheduler来执行其他定时任务
在 ThinkPHP 5 中,你可以使用定时任务调度器(TaskScheduler)来执行其他定时任务。以下是一个示例代码,演示如何在一个定时任务中执行另一个定时任务:首先,你需要创建一个继承自 think\console\Command 的定时任务类,例如 TaskA:namespace&nbsp;app\command; use&nbsp;think\con
发表于:2023-12-02 浏览:1102 TAG: