首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
Web开发
> 详细
PHP获取远程图片并调整图像大小
时间:
2015-06-09 19:02:50
阅读:
143
评论:
0
收藏:
0
[点我收藏+]
标签:
<?php
/**
*
*函数:调整图片尺寸或生成缩略图
*修改:2013-2-15
*返回:True/False
*参数:
* $Image 需要调整的图片(含路径)
* $Dw=450 调整时最大宽度;缩略图时的绝对宽度
* $Dh=450 调整时最大高度;缩略图时的绝对高度
* $Type=1 1,调整尺寸; 2,生成缩略图
*/
$phtypes=
array(
‘img/gif‘,
‘img/jpg‘,
‘img/jpeg‘,
‘img/bmp‘,
‘img/pjpeg‘,
‘img/x-png‘);
function compressImg(
$Image,
$Dw,
$Dh,
$Type){
echo
$Image;
IF(!
file_exists(
$Image)){
echo
"不存在图片";
return false;
}
echo
"存在图片";
// 如果需要生成缩略图,则将原图拷贝一下重新给$Image赋值(生成缩略图操作)
// 当Type==1的时候,将不拷贝原图像文件,而是在原来的图像文件上重新生成缩小后的图像(调整尺寸操作)
IF(
$Type!=1){
copy(
$Image,
str_replace(
".",
"_x.",
$Image));
$Image=
str_replace(
".",
"_x.",
$Image);
}
// 取得文件的类型,根据不同的类型建立不同的对象
$ImgInfo=
getimagesize(
$Image);
Switch(
$ImgInfo[2]){
case 1:
$Img =@imagecreatefromgif(
$Image);
break;
case 2:
$Img =@imagecreatefromjpeg(
$Image);
Break;
case 3:
$Img =@imagecreatefrompng(
$Image);
break;
}
// 如果对象没有创建成功,则说明非图片文件
IF(
Empty(
$Img)){
// 如果是生成缩略图的时候出错,则需要删掉已经复制的文件
IF(
$Type!=1){
unlink(
$Image);
}
return false;
}
// 如果是执行调整尺寸操作则
IF(
$Type==1){
$w=ImagesX(
$Img);
$h=ImagesY(
$Img);
$width =
$w;
$height =
$h;
IF(
$width>
$Dw){
$Par=
$Dw/
$width;
$width=
$Dw;
$height=
$height*
$Par;
IF(
$height>
$Dh){
$Par=
$Dh/
$height;
$height=
$Dh;
$width=
$width*
$Par;
}
} ElseIF(
$height>
$Dh) {
$Par=
$Dh/
$height;
$height=
$Dh;
$width=
$width*
$Par;
IF(
$width>
$Dw){
$Par=
$Dw/
$width;
$width=
$Dw;
$height=
$height*
$Par;
}
} Else {
$width=
$width;
$height=
$height;
}
$nImg =ImageCreateTrueColor(
$width,
$height);
// 新建一个真彩色画布
ImageCopyReSampled(
$nImg,
$Img,0,0,0,0,
$width,
$height,
$w,
$h);
// 重采样拷贝部分图像并调整大小
ImageJpeg(
$nImg,
$Image);
// 以JPEG格式将图像输出到浏览器或文件
return true;
} Else {
// 如果是执行生成缩略图操作则
$w=ImagesX(
$Img);
$h=ImagesY(
$Img);
$width =
$w;
$height =
$h;
$nImg =ImageCreateTrueColor(
$Dw,
$Dh);
IF(
$h/
$w>
$Dh/
$Dw){
// 高比较大
$width=
$Dw;
$height=
$h*
$Dw/
$w;
$IntNH=
$height-
$Dh;
ImageCopyReSampled(
$nImg,
$Img, 0, -
$IntNH/1.8, 0, 0,
$Dw,
$height,
$w,
$h);
} Else {
// 宽比较大
$height=
$Dh;
$width=
$w*
$Dh/
$h;
$IntNW=
$width-
$Dw;
ImageCopyReSampled(
$nImg,
$Img,-
$IntNW/1.8,0,0,0,
$width,
$Dh,
$w,
$h);
}
ImageJpeg(
$nImg,
$Image);
return true;
}
};
?>
<?php
//网络图片路径
$imgPath =
‘http://www.lesohome.com/phone/compress-img/251139474ba926db3d7850.jpg‘;
//$imgPath = "http://www.lesohome.com/userfiles/image/20111125/251139474ba926db3d7850.jpg";
$tempPath =
str_replace(
‘http://www.lesohome.com/‘,
‘‘,
$imgPath);//替换换行字符
$name =
strrchr(
$tempPath,
"/");
$path =
str_replace(
$name,
‘‘,
$tempPath);
//替换换行字符
/**
*根据路径path建立多级目录
*$dir目标目录 $mode权限,0700表示最高权限
*/
function makedir(
$dir ,
$mode =
"0700" ) {
if(
strpos(
$dir ,
"/" )){
$dir_path =
"" ;
$dir_info =
explode(
"/" ,
$dir );
foreach(
$dir_info
as
$key =>
$value){
$dir_path .=
$value ;
if (!
file_exists(
$dir_path)){
@
mkdir(
$dir_path,
$mode)
or
die (
"建立文件夹时失败了" );
@
chmod(
$dir_path,
$mode);
}
else {
$dir_path .=
"/" ;
continue ;
}
$dir_path .=
"/" ;
}
return
$dir_path ;
}
else {
@
mkdir(
$dir,
$mode)
or
die(
"建立失败了,请检查权限" );
@
chmod(
$dir,
$mode);
return
$dir ;
}
}
//end makedir
makedir(
$path);
/**
*根据url获取服务器上的图片
*$url服务器上图片路径 $filename文件名
*/
function GrabImage(
$url,
$filename=
"") {
if(
$url==
"")
return false;
if(
$filename==
"") {
$ext=
strrchr(
$url,
".");
if(
$ext!=
".gif" &&
$ext!=
".jpg" &&
$ext!=
".png")
return false;
$filename=
date(
"YmdHis").
$ext;
}
ob_start();
readfile(
$url);
$img = ob_get_contents();
ob_end_clean();
$size =
strlen(
$img);
$fp2=@
fopen(
$filename,
"a");
fwrite(
$fp2,
$img);
fclose(
$fp2);
return
$filename;
}
?>
<html>
<body>
允许上传的文件类型为:<?=implode(
‘, ‘,
$phtypes)?><br/>
<input type=
"button" id=
"getImg" name=
"getImg" size=
"10" value=
"获取图片并保存" onclick=
"alert(‘12333‘);" />
<?php
echo
$path.
"<br>";
/**/
$bigImg=GrabImage(
$imgPath,
$tempPath);
if(
$bigImg){
echo
‘<img src="‘.
$bigImg.
‘"><br>‘;
}
else {
echo
"false";
}
compressImg(
$bigImg,100,80,1);
?>
</body>
</html>
PHP获取远程图片并调整图像大小
标签:
原文地址:http://www.cnblogs.com/sanwenyu/p/4563987.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
36.VUE — 认识 Webpack 和 安装
2021-07-28
【PHP】上传图片翻转问题
2021-07-28
php对数字进行万。亿的转化
2021-07-28
五个 .NET 性能小贴士
2021-07-28
Three.js中显示坐标轴、平面、球体、四方体
2021-07-28
.net 5+ 知新:【1】 .Net 5 基本概念和开发环境搭建
2021-07-27
1.html,css
2021-07-27
基于Docker搭建 Php-fpm + Nginx 环境
2021-07-27
nginx + http + svn
2021-07-27
kubernets kube-proxy的代理 iptables和ipvs
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!