`

php > 根据远程图片URL 生成缩略图

    博客分类:
  • php
 
阅读更多
<?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){
	
	IF(!file_exists($Image)){
		return false;
	}
	// 如果需要生成缩略图,则将原图拷贝一下重新给$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;
	}
};



/**
 *根据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;
}
?>




<?php
//网络图片路径
$imgPath = 'http://news.jingway.cn/images/1382088444437.jpg';//远程URL 地址
$tempPath = 'aa/bbs.jpg';//保存图片路径

if(is_file($tempPath)){
	unlink($tempPath);
}

$bigImg=GrabImage($imgPath, $tempPath);

compressImg($bigImg,70,70,1);
?>


</body>
</html>

 

分享到:
评论

相关推荐

    无刷新上传--可生成缩略图--demo.zip

    本DEMO "无刷新上传--可生成缩略图--demo.zip" 恰好涵盖了这个领域的几个关键知识点,包括无刷新上传、PHP上传类的使用、远程上传以及生成缩略图。 首先,无刷新上传主要依赖于AJAX(Asynchronous JavaScript and ...

    网站缩略图生成源码下载_php源码_

    在这个项目中,PHP将扮演核心角色,负责处理HTTP请求,解析URL,与服务器通信并生成缩略图。PHP的灵活性和强大的功能使得它成为构建此类服务的理想选择。 首先,我们需要理解源码的工作原理。当用户提交一个网址,...

    EvaCloudImage - 基于URL生成缩略图的轻量级PHP库

    EvaCloudImage是一款轻量级的PHP库,专门用于通过URL生成缩略图。这个库在处理网络图像时提供了一种高效且灵活的解决方案,尤其适用于那些需要在网站上快速生成和显示缩略图的场景。它允许开发者通过简单的API调用来...

    基于url获得缩略图,水印图,二维码图

    例如,可以创建一个API接口,接收URL参数,然后调用上述代码生成缩略图、水印图或二维码图,并将结果以二进制流形式返回给前端。 总之,生成基于URL的缩略图、水印图和二维码图涉及了图像处理、HTTP请求和可能的...

    获取远程图片

    以提供的`thumb.php`为例,这可能是一个处理远程图片的脚本,用来生成缩略图或者进行其他图像处理。 在PHP中,可以使用`file_get_contents()`函数来获取远程资源,然后使用GD库处理图片。以下是一个简单的示例,...

    php生成缩略图填充白边(等比缩略图方案)

    在网站开发中,生成缩略图是一项常见的任务,特别是在用户上传图片时,为了保持页面布局的统一和美观,通常需要将图片转化为固定尺寸的缩略图。然而,如果原始图片的比例与设定的缩略图尺寸不符,直接进行缩放会导致...

    缩略图处理库

    本文将详细介绍一个经典类库——PHPThumb,这是一个用PHP编写的强大的图像处理库,专门用于生成缩略图。 PHPThumb是基于PHP的开源项目,其全名是PHP Thumbnail Generator,由James Enright创建。这个库提供了多种...

    解决苹果cms采集视频图片显示失败问题

    总之,"tu.php"是苹果CMS为修复视频缩略图加载失败问题提供的一个解决方案,它的具体工作原理需要根据文件内的代码来分析。通过理解和应用这些修复策略,你可以有效地解决类似问题,提升你的视频网站的稳定性和用户...

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换成XML格式 日期计算 是否为电子邮件格式 柱形统计图 检查是否为一个合法的时间格式 检测URL地址有效性 检测文件是否图片 检测是否可以以...

    destoon资讯发布模块-图片本地化

    在“资讯发布模块-图片本地化”中,`module.xml` 可能会包含有关如何处理和存储图片的配置选项,如图片大小限制、存储路径、缩略图生成规则等。开发者或管理员可以通过修改这个文件来调整图片本地化的具体策略。 ...

    PicCMS图片管理系统 1.1.rar

    ·自动提取首张图片为缩略图 ·自动生成任意大小缩略图 ·幻灯片模式图片展示页 ·支持静态缓存,全站生成HTML ·内置采集器,迅速从网络抓取图文 ·自由分类,自动生成导航和内容调用 ·模板分离设计,轻松...

    Laravel开发-timthumb

    Timthumb是一款广泛使用的PHP图片缩放脚本,它允许动态地生成缩略图,无需预先创建各种尺寸的图片。将Timthumb集成到Laravel项目中,可以为图像处理提供极大的便利性。 一、Laravel中的图像处理基础 Laravel框架...

    Ueditor(三):将图片上传至项目外的目录

    在实际应用中,我们还可能需要考虑其他因素,如图片的缩略图生成、大小限制、格式检查等。此外,为了提高用户体验,还可以添加进度条显示上传进度,或者在出错时给出友好提示。 总结来说,将Ueditor的图片上传功能...

    Chevereto v1.91 在线图片存储分享服务程序.zip

    Chevereto v1.91 还可能包含其他高级特性,如用户账户管理、权限控制、自定义域名绑定、图片预览、多种格式支持(如JPEG、PNG、GIF等)、图片缩略图生成、以及可能的API接口,以供开发者进行扩展或与其他应用集成。...

    iCMS (原DreamArticle) v5.0.1.rar

    自定义文章属性,方便模板调用 FCKeditor在线编辑器 远程图片本地化,提取第一个图片为缩略图 后台权限管理 栏目权限分配 管理员文章评论回复 无限引用 盖楼 简易留言功能 RSS功能 百度网站地图模板 GOOGLE网站地图...

    iCMS plus 5.1 Build 20110220.rar

    远程图片本地化,提取第一个图片为缩略图 后台权限管理 栏目权限分配 管理员文章评论回复 无限引用 盖楼 简易留言功能 RSS功能 百度网站地图模板 GOOGLE网站地图模板 广告管理功能 单独页面内容...

    小鱼儿外贸网站模板管理系统V3.8

    5,产品上传图片自动生成缩略图,加快产品列表访问速度 6,上传产品图片自动添加文字水印,加大盗图难度 7,详细介绍可传附件,方便供客户下载PDF,Doc,Xls,RAR,ZIP等文件 8,保存远程图片功能,当复制别人网站...

    iCMS PHP网站系统 v6.0.rar

    iCMS是一套功能强大、开源的PHP内容管理系统,支持无限级的分类与子分类,可设置单独页面、频道、列表页,支持分类自定义字段,具备完善的文章...支持远程图片本地化,自动生成图片缩略图等,后台测试界面如截图所示。

    iCMS Plus (原DreamArticle) V5.1 Build 20110220.rar

    远程图片本地化,提取第一个图片为缩略图 后台权限管理 栏目权限分配 管理员文章评论回复 无限引用 盖楼 简易留言功能 RSS功能 百度网站地图模板 GOOGLE网站地图模板 广告管理功能 单独页面内容...

    wordpress常用插件打包 百度搜索推送插件+sitemap生成+七牛云对象存储+评论防护

    支持一键禁止缩略图 支持自定义任意对象存储目录,一个存储桶可以多网站 支持自动文件重命名 支持本地和对象存储分离和同步 2020 年重构代码改变传统逻辑模型 二、 WordPress 百度搜索推送插件,主要功能:发布新...

Global site tag (gtag.js) - Google Analytics