Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

使用PHP轻松调整图像大小

by
Difficulty:IntermediateLength:LongLanguages:

Chinese (Simplified) (中文(简体)) translation by Fuhuan (you can also view the original English article)

想要一个用PHP调解图像大小的简单方法吗? Ĵ将学习如何构建我们的PHP,并进行扩展。 调整大小应该很容易。 有多么容易? 就三个步骤!


介绍

为了让你快速了解我们想要达成的目标,应该是:

  • 使用方便
  • 格式独立。 能使用IE打开,调整大小,并保存一些不同的图像格式。
  • 矢量图像

注意:这不是关于如何创建类和对象的教程,虽然这个技能会有帮助,但为了遵循本教程,这不是必需的。

有很多内容需要讨论 - 让我们开始吧。


步骤1

我们将从头开始。  在你的工作目录中创建两个文件:一个叫做index.php,另一个叫做resize-class.php


第2步调用对象

为了让你了解我们想要实现的目标,我们将开始编写用于调整图像大小的代码。 打开你的index.php文件并添加下面的代码。

正如你所看到的,我们正在做的事情有一个很好的目标。 我们打开图像文件,设置要调整图像大小的尺寸以及调整大小的类型。
然后我们保存图像,选择我们想要的图像格式和图像质量。 保存并关闭你的的index.php文件。

从上面的代码中,你可以看出我们正在打开一个jpg文件,但保存了一个gif。 请记住,这完全是关于灵活性。


请记住,这完全是关于灵活性。

它是面向对象的编程(OOP),使得这种轻松的感觉成为可能。 想想像一个模式的类; 你可以封装数据 - 另一个术语,这实际上意味着隐藏数据。 然后,我们可以重复使用这个类,而不需要重写任何调整大小的代码 - 你只需要调用适当的方法,就像我们在第二步中所做的那样。 一旦我们的模式被创建,我们创建这个模式的实例,称为对象。

“构造函数被称为构造函数,它是一种特殊的类方法,当你创建一个新的对象时,该方法被类调用。”

“构造函数被称为构造函数,它是一种特殊的类方法,当你创建一个新的对象时,该方法被类调用。” “构造函数被称为构造函数,它是一种特殊的类方法,当你创建一个新的对象时,该方法被类调用。” 下面是我称之为“调整大小”的一个非常基本的类骨架结构。 请注意类变量注释行; 这是我们稍后将开始添加我们重要的类变量。

构造函数,称为构造函数,是一种特殊的类方法(术语“方法”与函数相同,但是在讨论类和对象时,常常使用术语方法),在你创建时由类调用一个新的对象。 这使得它适合我们做一些初始化 - 我们将在下一步中完成。

请注意,这是构造方法的双下划线。


第4步构造函数

我们将修改上面的构造函数方法。  首先,我们将传入要调整大小的图像的文件名(和路径)。 我们将调用这个变量$ fileName。

我们需要打开通过PHP(更具体地说PHP GD库)传入的文件,以便PHP可以读取图像。 我们正在用自定义方法'openImage'来做这件事。 我会去看看这个方法
在一瞬间工作,但现在,我们需要将结果保存为类变量。  一个类变量只是一个变量 - 但它是特定于该类的。 还记得我之前提到的类变量注释吗?  通过输入'private $ image;'将'image'添加为私有变量。 通过将该变量设置为'Private',你可以设置该变量的范围,因此只能由该类访问。 从现在开始,我们可以调用我们打开的图像,称为资源,稍后我们将在调整大小时进行调用。

当我们处理它时,让我们存储图像的高度和宽度。 我有一种感觉,这些将在稍后有用。

你现在应该有以下。

方法imagesx和imagesy构建在GD库的一部分函数中。 它们分别检索图像的宽度和高度。


步骤5打开图像

在上一步中,我们调用自定义方法openImage。 在上一步中,我们调用自定义方法openImage。 我们希望脚本为我们做思考,因此根据传入的文件类型,脚本应该确定调用哪个GD库函数来打开图像。 这可以通过将文件扩展名与switch语句进行比较来轻松实现。

我们传递我们想要调整大小的文件并返回该文件资源。


步骤6如何调整大小

这是爱情发生的地方。 这一步实际上只是解释我们要做什么 - 所以这里没有作业。 在下一步中,我们将创建一个公共方法,我们将调用它来执行调整大小; 因此传递宽度和高度以及有关如何调整图像大小的信息是有意义的。 我们来谈谈这个片刻。 将会出现你希望将图像大小调整为确切大小的场景。 太好了,让我们包括这个。 但也有时候,你不得不调整数百个图像的大小,并且每个图像都有不同的纵横比 - 考虑纵向图像。 将这些尺寸调整到一个确切的大小会导致严重的失真。如果我们看看我们的选项以防止失真,我们可以:

  1. 尽可能调整图像的大小以适应新的图像尺寸,同时保持纵横比。
  2. 调整图像的大小,尽可能接近我们的新图像尺寸并裁剪剩余部分。

这两个选项都是可行的,取决于你的需求。

是的 我们将尝试处理以上所有内容。 总而言之,我们将提供以下选项:

  1. 总而言之,我们将提供以下选项: (精确)
  2. 按宽度调整大小 - 将设置精确宽度,根据高宽比调整高度。 (景观)
  3. 按高度调整大小 - 例如按宽度调整大小,但高度将被设置并动态调整宽度。 (肖像)
  4. 自动确定选项2和3。 如果你正在循环显示具有不同尺寸照片的文件夹,请让脚本确定如何处理此问题。 (汽车)
  5. 调整大小,然后裁剪。 这是我最喜欢的。 确切的大小,没有失真。 (作物)

步骤7调整大小。 我们开始做吧!

调整大小方法有两部分。 首先是通过创建一些自定义方法来获得我们新图像的最佳宽度和高度 - 当然,如上所述传递调整大小'选项'。 宽度和高度以数组形式返回并设置为各自的变量。 随意'作为参考传递' - 但我不是那个巨大的粉丝。

第二部分是执行实际调整大小的内容。  为了保持这个教程的大小,我让你阅读下面的GD函数:

我们还将imagecreatetruecolor方法(新的真彩色图像)的输出保存为类变量。 添加'private $ imageResized;' 与你的其他类变量。

调整大小由一个称为GD Library的PHP模块执行。 我们使用的许多方法都是由这个库提供的。


步骤8决策树

你现在做的工作越多,调整大小时就越不需要做。 此方法选择要采取的路线,目标是根据你的调整大小选项获取最佳调整大小宽度和高度。 它会调用适当的方法,我们将在下一步中创建该方法。


第9步最佳尺寸

我们已经讨论了这四种方法的作用。 他们只是基本的数学,真的,这是计算我们最合适的。


第10步裁剪

如果你选择了作物 - 也就是说,你已经使用了作物选项,那么你还有一小步。 我们将裁剪图像
中央。 裁剪是一个非常类似的调整大小的过程,但是会传入更多的尺寸参数。


第11步保存图像

我们到了那里; 几乎完成。 现在是时候保存图像了。 我们通过路径,我们想要的图像质量从0到100,100是最好的,并且调用适当的方法。  关于图像质量需要注意几点:JPG使用0-100的比例,100是最好的。  GIF图像没有图像质量设置。 PNG的确如此,但他们使用0-9的比例,0是最好的。 这是不好的,因为我们不希望我们每次想要保存图像时都会记住这一点。 这是不好的,因为我们不希望我们每次想要保存图像时都会记住这一点。 我们做了一些魔术来标准化一切。

现在也是摧毁我们的图像资源释放一些内存的好时机。 如果你要在制作中使用此功能,则最好捕获并返回保存图像的结果。


结论

好吧,伙计们。 感谢你参阅本教程,我希望你觉得它有用。 我会通过下面的评论感谢你的反馈。

关注我们的公众号
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.