php image resize

其他类别 2025-08-24

php图像量

PHP库进行调整,扩展和作物图像大小。

云解决方案

如果您不想裁剪,调整大小和存储图像在服务器上,则Gumlet.com是一项免费服务,可以实时处理图像并通过CDN在全球范围内提供。


设置

该软件包可通过Packagist提供与供应商和软件包标识符相同的供应商。

如果使用Composer,则在您的composer.json文件中添加:

{
    "require" : {
        "gumlet/php-image-resize" : " 2.1.* "
    }
}

对于PHP版本> = 7.2至2.0.x版本应使用此库的版本。

否则:

 include ' /path/to/ImageResize.php ' ;

因为此类使用命名 - 实例化对象时,您需要使用完全合格的名称空间:

 $ image = new  Gumlet  ImageResize ();

或别名:

 use  Gumlet  ImageResize ;

$ image = new ImageResize ();

注意:此库使用的GD类不支持调整动画大小的GIF文件


调整大小

要缩放图像,在这种情况下,大小的大小(缩放是基于百分比的):

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> save ( ' image2.jpg ' );

根据一个维度(保持长宽比)调整图像的大小:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToHeight ( 500 );
$ image -> save ( ' image2.jpg ' );

$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> save ( ' image2.jpg ' );

根据给定量度有关其取向的措施(保持纵横比)的图像大小:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToLongSide ( 500 );
$ image -> save ( ' image2.jpg ' );

$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToShortSide ( 300 );
$ image -> save ( ' image2.jpg ' );

要调整图像以最佳拟合给定的尺寸(保持ASPET比率):

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToBestFit ( 500 , 300 );
$ image -> save ( ' image2.jpg ' );

所有调整大小函数都有$allow_enlarge选项,默认情况下设置为false。您可以通过将true调整大小函数传递给启用:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 500 , 300 , $ allow_enlarge = True );
$ image -> save ( ' image2.jpg ' );

如果您乐于自己处理宽高比,则可以直接调整大小:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );

如果您不使用与源图像相同的宽度/高度比率,这将导致您的图像偏斜。

庄稼

裁剪图像:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );

这将使图像尽可能地缩小到通过的尺寸,然后裁剪其余的剪辑。

在上面的示例的情况下,将400px×600px的图像调整为200px×300px,然后将50px从顶部和底部取下,使您拥有200px×200px。

作物模式:

很少有裁剪模式选项可供您选择在调整图像大小后如何处理最终超出宽度或高度的方式。使用的默认作物模式是CROPCENTER 。结果,这些代码是等效的:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
 $ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPCENTER );
$ image -> save ( ' image2.jpg ' );

如果您的图像为400px×600px,并且想将其裁剪到200px×200px,则图像将调整到200px×300px的大小,然后您可以指出如何处理100px超过您想要使用的作物模式的价值。

例如,通过裁剪模式农作物CROPTOP将导致100px取下底部,使您拥有200px×200px。

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPTOP );
$ image -> save ( ' image2.jpg ' );

相反,通过农作物模式, CROPBOTTOM将导致100px脱离顶部,而您以200px×200px的身份将您带来。

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPBOTTOM );
$ image -> save ( ' image2.jpg ' );

Freecrop:

还有一种定义自定义作物位置的方法。您可以定义$ x和$ y的freecrop方法:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> freecrop ( 200 , 200 , $ x =  20 , $ y = 20 );
$ image -> save ( ' image2.jpg ' );

从字符串加载和保存图像

从字符串加载图像:

 $ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
$ image -> save ( ' image.jpg ' );

您还可以将结果返回为字符串:

 $ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
echo $ image -> getImageAsString ();

魔术__toString()也得到支持:

 $ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> resize ( 10 , 10 );
echo ( string ) $ image ;

显示

如上所述,您可以调用$image->save('image.jpg');

要将图像直接渲染到浏览器中,您可以调用$image->output() ;

图像类型

保存到磁盘或输出到浏览器中时,脚本假设输出类型与输入相同。

如果您想在其他图像类型中保存/输出,则需要传递(支持的)PHP IMAGETYPE_ *常数:

  • IMAGETYPE_GIF
  • IMAGETYPE_JPEG
  • IMAGETYPE_PNG

这使您可以保存与源的不同类型:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image.png ' , IMAGETYPE_PNG );

质量

属性$quality_jpg$quality_webp$quality_png可供您配置:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> quality_jpg = 100 ;
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );

默认情况下,它们分别设置为85和6。有关更多信息,请参见imagejpeg()imagepng()的手册条目。

您还可以将质量直接传递给save()output()getImageAsString()方法:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' , null , 100 );

$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> output ( IMAGETYPE_PNG , 4 );

$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ result = $ image -> getImageAsString ( IMAGETYPE_PNG , 4 );

我们将在上面的示例中传递null的图像类型,以跳过它并提供质量。在这种情况下,假定图像类型与输入相同。

交错

默认情况下,打开图像交织。可以通过将$interlace设置为0 :可以禁用它:

 $ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> interlace = 0 ;
$ image -> save ( ' image2.jpg ' );

链接

执行操作时,将保留原始图像,以便您可以链接操作而不会过多破坏。

这对于创建多种尺寸很有用:

 $ image = new ImageResize ( ' image.jpg ' );
$ image
    -> scale ( 50 )
    -> save ( ' image2.jpg ' )

    -> resizeToWidth ( 300 )
    -> save ( ' image3.jpg ' )

    -> crop ( 100 , 100 )
    -> save ( ' image4.jpg ' )
;

例外

ImageSeresize将ImageSeresizeexexection引起了自己的错误。您可以抓住它或捕获其扩展的常规 exception。

这不是可以预期的,但是如果有任何可怕的错误在中途错误,则可以从PHP GD和图像函数(http://php*.net*/ma*nual/manual/en/en/ref.image.php)显示注意或警告错误。

 try {
    $ image = new ImageResize ( null );
    echo " This line will not be printed " ;
} catch ( ImageResizeException $ e ) {
    echo " Something went wrong " . $ e -> getMessage ();
}

过滤器

您可以为新图像(例如Blur或添加横幅)应用特殊效果。

 $ image = new ImageResize ( ' image.jpg ' );

// Add blure
$ image -> addFilter ( function ( $ imageDesc ) {
    imagefilter ( $ imageDesc , IMG_FILTER_GAUSSIAN_BLUR );
});

// Add banner on bottom left corner
$ image18Plus = ' banner.png '
$ image -> addFilter ( function ( $ imageDesc ) use ( $ image18Plus ) {
    $ logo = imagecreatefrompng ( $ image18Plus );
    $ logo_width = imagesx ( $ logo );
    $ logo_height = imagesy ( $ logo );
    $ image_width = imagesx ( $ imageDesc );
    $ image_height = imagesy ( $ imageDesc );
    $ image_x = $ image_width - $ logo_width - 10 ;
    $ image_y = $ image_height - $ logo_height - 10 ;
    imagecopy ( $ imageDesc , $ logo , $ image_x , $ image_y , 0 , 0 , $ logo_width , $ logo_height );
});

翻动

使用给定模式翻转图像,此方法仅适用于PHP版本5.4。

 $ flip = new ImageResize ( ' image.png ' );
$ image = imagecreatetruecolor ( 200 , 100 );

$ image -> addFilter ( function ( $ image ) {
    imageflip ( $ image , IMG_FLIP_HORIZONTAL );
});

这两个功能都将按照添加的顺序使用。

伽玛颜色校正

您可以启用默认情况下禁用的伽马颜色校正。

 $ image = new ImageResize ( ' image.png ' );
$ image -> gamma ( true );

API文档

https://gumlet.gith***ub.io/php-image-resize/index.html


维护者

该图书馆由Gumlet.com维护

下载源码

通过命令行克隆项目:

git clone https://github.com/gumlet/php-image-resize.git