您正在使用IPV4(44.192.247.184)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
悟空收录网       [公益]文明驾车我带头,文明行路我带头,礼貌让座我带头      

【腾讯云】云服务器等爆品抢先购,低至4.2元/月      
[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
2023年 元宵节 4
2023年 情人节 13
2024年 元 旦 334
2024年 春 节 374
 
您现在的位置:首页 >> PHP >> 内容
本类新增
本类热门文章
PHP先等比缩放再无损裁剪图片
内容摘要: ?php/***说明:函数功能是把一个图像裁剪为任意大小的图像,图像不变形[email protected]$src_file需要处理图片的文件名(绝对路径)[email protected]$dst_file生成新图片的保存文件名(绝对路径)[email protected]$new_width生成新图片的宽[email protected]$new_height生成新图片的高*/function......
<?php

/**

*说明:函数功能是把一个图像裁剪为任意大小的图像,图像不变形

*

[email protected]$src_file需要处理图片的文件名(绝对路径)

[email protected]$dst_file生成新图片的保存文件名(绝对路径)

[email protected]$new_width生成新图片的宽

[email protected]$new_height生成新图片的高

*/

functionmy_image_resize($src_file,$dst_file,$new_width,$new_height){

if($new_width<1||$new_height<1){

echo'paramswidthorheighterror!';

die;

}

if(!file_exists($src_file)){

echo$src_file.'isnotexists!';

die;

}

//图像类型

$type=exif_imagetype($src_file);

$support_type=array(IMAGETYPE_JPEG,IMAGETYPE_PNG,IMAGETYPE_GIF);

if(!in_array($type,$support_type,true)){

echo'thistypeofimagedoesnotsupport!onlysupportjpg,giforpng';

die;

}

//Loadimage

switch($type){

caseIMAGETYPE_JPEG:

$src_img=imagecreatefromjpeg($src_file);

break;

caseIMAGETYPE_PNG:

$src_img=imagecreatefrompng($src_file);

break;

caseIMAGETYPE_GIF:

$src_img=imagecreatefromgif($src_file);

break;

default:

echo'Loadimageerror!';

die;

}

$w=imagesx($src_img);

$h=imagesy($src_img);

$ratio_w=(1.0*$new_width)/$w;

$ratio_h=(1.0*$new_height)/$h;

$ratio=1.0;

//生成的图像的高宽比原来的都小,或都大,原则是取大比例放大,取大比例缩小(缩小的比例就比较小了)

if($ratio_w<1&&$ratio_h<1||$ratio_w>1&&$ratio_h>1){

if($ratio_w<$ratio_h){

$ratio=$ratio_h;

}else{

$ratio=$ratio_w;

}

//定义一个中间的临时图像,该图像的宽高比正好满足目标要求

$inter_w=(int)($new_width/$ratio);

$inter_h=(int)($new_height/$ratio);

$inter_img=imagecreatetruecolor($inter_w,$inter_h);

imagecopy($inter_img,$src_img,0,0,0,0,$inter_w,$inter_h);

//生成一个以最大边长度为大小的是目标图像$ratio比例的临时图像

//定义一个新的图像

$new_img=imagecreatetruecolor($new_width,$new_height);

imagecopyresampled($new_img,$inter_img,0,0,0,0,$new_width,$new_height,$inter_w,$inter_h);

switch($type){

caseIMAGETYPE_JPEG:

imagejpeg($new_img,$dst_file,100);

//存储图像

break;

caseIMAGETYPE_PNG:

imagepng($new_img,$dst_file,100);

break;

caseIMAGETYPE_GIF:

imagegif($new_img,$dst_file,100);

break;

default:

break;

}

}else{

$ratio=$ratio_h>$ratio_w?$ratio_h:$ratio_w;

//取比例大的那个值

//定义一个中间的大图像,该图像的高或宽和目标图像相等,然后对原图放大

$inter_w=(int)($w*$ratio);

$inter_h=(int)($h*$ratio);

$inter_img=imagecreatetruecolor($inter_w,$inter_h);

//将原图缩放比例后裁剪

imagecopyresampled($inter_img,$src_img,0,0,0,0,$inter_w,$inter_h,$w,$h);

//定义一个新的图像

$new_img=imagecreatetruecolor($new_width,$new_height);

imagecopy($new_img,$inter_img,0,0,0,0,$new_width,$new_height);

switch($type){

caseIMAGETYPE_JPEG:

imagejpeg($new_img,$dst_file,100);

//存储图像

break;

caseIMAGETYPE_PNG:

imagepng($new_img,$dst_file,100);

break;

caseIMAGETYPE_GIF:

imagegif($new_img,$dst_file,100);

break;

default:

break;

}

}

}

?>

函数调用

my_image_resize("L:\\1.jpg","L:\\2.jpg",200,125);

本实例用到了exif_imagetype()函数,若运行程序报错,你需要打开两个扩展

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:PHP生成饼图的示例代码 下一篇:php获得网页源代码抓取网页内容的几种方
发布日期:2023/1/9
手机扫二维码直达本页
发布时间:14:01:01
点  击:31
录  入:壹家怡园
相关文章
Baidu

YiJiaCMS 6.3.5.220928(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护
Copyright©2000-2023