php 对图片缩放,php 图片等比例缩放和截图

本文介绍了一种实现图片在线快速缩放和裁剪的方法,通过PHP代码实现了不同格式图片的处理,包括图片的上传、缩放比例调整及裁剪等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要缩放和截图呢?最重要一点,就是加载的速度,如果我想要显示一个30x30的图片,但是你上传的图片是300x300,页面加载图片的时候,肯定30x30的要快。所以我们就要截取或者缩放,现在sns的网站都提供,头像的截取。

一,准备test.html页面

二,准备Image.class.php文件

class Image {

protected $nameinfo;

protected $InputImageFileExtension;

public static function getInstance() {

static $instance;

if (!isset ($instance)) {

$class = __CLASS__;

$instance = new $class ();

}

return $instance;

}

function uploadresize($fileparam, $imageparam) {

$this->nameinfo = explode('.',$fileparam['name']);

//取得图片格式

$this->InputImageFileExtension = $this->nameinfo[1];

//判断是不是给了新的文件名

if(empty($imageparam['imagename'])){

$outputFileName = $this->nameinfo[0];

}else{

$outputFileName = $imageparam['imagename'];

}

//判断路径是否正确

if (!file_exists($imageparam['imagepath'])) {

if(!mkdir($imageparam['imagepath'])){

throw new Exception('image path is wrong');

exit;

}

}

$file_src = $imageparam['imagepath']."/". $outputFileName . "." . $this->InputImageFileExtension;

// temporary safe image storage

if(file_exists($file_src)){

unlink($file_src);

}

move_uploaded_file($fileparam['tmp_name'], $file_src);

switch ($this->InputImageFileExtension) {

case "jpg" :

$SRC_IMAGE = ImageCreateFromJPEG($file_src);

break;

case "gif" :

$SRC_IMAGE = ImageCreateFromgif($file_src);

break;

case "wbmp" :

$SRC_IMAGE = ImageCreateFromwbmp($file_src);

break;

case "png" :

$SRC_IMAGE = ImageCreateFrompng($file_src);

break;

}

if(empty($imageparam['endy']) || !empty($imageparam['radio'])){

$imageparam['endy'] = ImageSY($SRC_IMAGE);

}

if(empty($imageparam['endx']) || !empty($imageparam['radio'])){

$imageparam['endx'] = ImageSX($SRC_IMAGE);

}

if(!empty($imageparam['radio'])){

$imageparam['startx'] = 0;

$imageparam['starty'] = 0;

$imageparam['outx'] = $imageparam['endx']*$imageparam['radio'];

$imageparam['outy'] = $imageparam['endy']*$imageparam['radio'];

}

$DEST_IMAGE = imagecreatetruecolor($imageparam['outx'], $imageparam['outy']);

unlink($file_src);

$createimage=imagecopyresampled($DEST_IMAGE, $SRC_IMAGE, 0, 0, $imageparam['startx'], $imageparam['starty'], $imageparam['outx'], $imageparam['outy'],$imageparam['endx'], $imageparam['endy']);

if (!$createimage) {

imagedestroy($SRC_IMAGE);

imagedestroy($DEST_IMAGE);

return (0);

} else {

imagedestroy($SRC_IMAGE);

switch (strtolower($this->InputImageFileExtension)) {

case "jpg" :

$I = ImageJPEG($DEST_IMAGE, $file_src);

break;

case "gif" :

$I = Imagegif($DEST_IMAGE, $file_src);

break;

case "wbmp" :

$I = Imagewbmp($DEST_IMAGE, $file_src);

break;

case "png" :

$I = Imagepng($DEST_IMAGE, $file_src);

break;

}

if ($I) {

imagedestroy($DEST_IMAGE);

}

}

$URL = $file_src;

return $URL;

}

}

?>

三,准备调用文件test.php

include "Image.class.php";

$array = $_FILES['photo'];

//截取参数

$resizeParam = array (

'imagename' => "", //默认情况下,来中原文件名

'outx' => 300, //输入时的横坐标

'outy' => 300, //输入时的纵坐标

'startx' => 100, //原图中的起点横坐标

'starty' => 100, //原图中的起点纵坐标

'endx' => 300, //原图中的终点横坐标

'endy' => 300, //原图中的终点纵坐标

'imagepath' => 'd:/xampp/www' //图片存储路径

);

//等比例缩放参数

$resizeParam = array (

'imagename' => "aaaa", //默认情况下,还是原文件名,在这里缩放后文件名为aaaa

'radio' => 0.5, //缩放比例

'imagepath' => 'd:/xampp/www' //图片存储路径

);

if (!empty ($array)) {

$crop = Image :: getInstance()->uploadresize($array, $resizeParam);

}

?>

说明,在上面的操作中,我没有做,是否是图片的check,图片大小的check,截取位置是否超出图片范围的check。改一点点就ok了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值