首页 后端开发 php教程 使用PHP缩略图跟剪切图

使用PHP缩略图跟剪切图

Jun 13, 2016 pm 12:32 PM
int resource src

使用PHP缩略图和剪切图
API:
resource imagecreatetruecolor ( int $width , int $height )
magecreatetruecolor() 返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像。

是否定义了本函数取决于 PHP 和 GD 的版本。从 PHP 4.0.6 到 4.1.x 只要加载了 GD 模块本函数一直存在,但是在没有安装 GD2 的时候调用,PHP 将发出致命错误并退出。在 PHP 4.2.x 中此行为改为发出警告而不是错误。其它版本只在安装了正确的 GD 版本时定义了本函数。

bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。

bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )
imagejpeg() 从 image 图像以 filename 为文件名创建一个 JPEG 图像。

ool imagedestroy ( resource $image )
imagedestroy() 释放与 image 关联的内存。image 是由图像创建函数返回的图像标识符,例如 imagecreatetruecolor()。



http://www.cnblogs.com/xiaomia/archive/2010/11/13/1876191.html
一开始采用了 imagecopyresized 方法进行图像等比缩小,实际操作后发现,图像缩小后燥点非常严重。后再换用 imagecopysampled 方法,该方法会对图像进行重新采样,对缩小的图像进行平滑处理,使清晰度得到很大提高

list($src_w,$src_h)=getimagesize($src_img);  // 获取原图尺寸

$dst_scale = $dst_h/$dst_w; //目标图像长宽比
$src_scale = $src_h/$src_w; // 原图长宽比

if($src_scale>=$dst_scale){  // 过高
$w = intval($src_w);
$h = intval($dst_scale*$w);

$x = 0;
$y = ($src_h - $h)/3;
}
else{ // 过宽
$h = intval($src_h);
$w = intval($h/$dst_scale);

$x = ($src_w - $w)/2;
$y = 0;
}

// 剪裁
$source=imagecreatefromjpeg($src_img);
$croped=imagecreatetruecolor($w, $h);
imagecopy($croped,$source,0,0,$x,$y,$src_w,$src_h);

// 缩放
$scale = $dst_w/$w;
$target = imagecreatetruecolor($dst_w, $dst_h);
$final_w = intval($w*$scale);
$final_h = intval($h*$scale);
imagecopyresampled($target,$croped,0,0,0,0,$final_w,$final_h,$w,$h);

// 保存
$timestamp = time();
imagejpeg($target, "$timestamp.jpg");
imagedestroy($target);
登录后复制


http://www.cnblogs.com/analyzer/articles/1267017.html
先说说缩略图,它用得比较多,代码如下:
<?php    
 header("Content-type: image/png");    
 //原图    
 $filename='source.jpg';    
 //缩放比例 新图/原图    
 $percent = '0.5';    
 list($width,$height) = getimagesize($filename);    
 $newwidth = $width * $percent;    
 $newheight = $height * $percent;    
// Load    
$thumb = imagecreatetruecolor($newwidth, $newheight);    
$source = imagecreatefromjpeg($filename);    
// Resize    
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);    
// Output    
imagepng($thumb);    
?> 
登录后复制



再说说剪切图,就是不缩放,而是从原图中剪切出一块小图,比较个性。代码如下:
<?php    
 $maxW=300;    
 $maxH=300;    
 //图片路径    
 $link= "big.jpg";    
 $img = imagecreatefromjpeg($link);    
 list($width, $height, $type, $attr) = getimagesize($link);    
 $widthnum=ceil($width/$maxW);    
 $heightnum=ceil($height/$maxH);    
$iOut = imagecreatetruecolor ($maxW,$maxH);    
//bool imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h )    
//将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。    
   
//整图循环切割    
for ($i=0;$i < $heightnum;$i++) {    
 for ($j=0;$j < $widthnum;$j++) {    
 imagecopy($iOut,$img,0,0,($j*$maxW),($i*$maxH),$maxW,$maxH);//复制图片的一部分    
 imagejpeg($iOut,"images/".$i."_".$j.".jpg"); //输出成0_0.jpg,0_1.jpg这样的格式    
 }    
}    
   
//只剪切一个开始部位的小图.复制图片的一部分    
 imagecopy($iOut,$img,0,0,0,0,$maxW,$maxH);    
 imagejpeg($iOut,"images/sm.jpg");    
?>
登录后复制

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

src和href是什么意思 src和href是什么意思 Aug 16, 2023 pm 05:00 PM

src和href分别是,1、src是source的缩写,用于指定外部资源的路径,通常用于嵌入外部文件,比如图片、音频、视频等,src属性一般用在img、script、iframe等标签上;2、href是hypertext reference的缩写,用于指定超链接的目标资源的路径,通常用于链接到外部文档或其他页面,href属性一般用在a、link等标签上。

PHP中int类型转换为字节的方法详解 PHP中int类型转换为字节的方法详解 Mar 06, 2024 pm 06:18 PM

PHP中int类型转换为字节的方法详解在PHP中,我们经常需要将整数类型(int)转换为字节(Byte)类型,比如在处理网络数据传输、文件处理或者加密算法等场景中。本文将详细介绍如何将int类型转换为字节类型,以及提供具体的代码示例。1.int类型与字节的关系在计算机领域,基本数据类型int表示整数,而字节(Byte)是计算机存储单位,通常是8位二进制数据

C++程序将double类型的变量转换为int类型 C++程序将double类型的变量转换为int类型 Aug 25, 2023 pm 08:25 PM

在C++中,int类型的变量只能保存正整数或负整数值;它们不能保存小数值。有float和double值可用于此目的。为了存储小数点后最多七位的小数,创建了双精度数据类型。整数到双精度数据类型的转换可以由编译器自动完成(称为“隐式”转换),也可以由程序员向编译器显式请求(称为“显式”转换)。在接下来的部分中,我们将介绍各种转换方法。隐式转换编译器自动执行隐式类型转换。要实现这一点,需要两个变量——一个是浮点类型,另一个是整数类型。当我们简单地将浮点值或变量分配给整数变量时,编译器将处理所有其他事情

int32的取值范围是多少 int32的取值范围是多少 Aug 11, 2023 pm 02:53 PM

int32的取值范围是从-2的31次方到2的31次方减1,即-2147483648到2147483647。int32是有符号的整数类型,意味着它可以表示正数、负数和零,它使用1位来表示符号位,而剩余的31位用来表示数值。由于一位被用来表示符号位,所以int32的有效位数是31位。

int占几个字节 int占几个字节 Jan 22, 2024 pm 03:14 PM

int类型在不同编程语言和不同硬件平台下所占用的字节数可能会有所不同。详细介绍:1、在C语言中,int类型通常占用2个字节或4个字节。在32位系统中,int类型占用4个字节,而在16位系统中,int类型占用2个字节。在64位系统中,int类型可能占用8个字节;2、在Java中,int类型通常占用4个字节,而在Python中,int类型没有字节数限制,可以自动调整等等。

java int 是几位 java int 是几位 Mar 06, 2023 pm 04:09 PM

在java中,int是32位有符号数据类型,其变量需要32位内存;int数据类型的有效范围为-2147483648至2147483647,此范围中的所有整数称为整数字面量。一个整数字面量可以分配给一个int变量,例如“int num1 = 21;”。

go语言怎么将int转为字符串类型 go语言怎么将int转为字符串类型 Jun 04, 2021 pm 03:56 PM

转换方法:1、使用Itoa()函数,语法“strconv.Itoa(num)”;2、使用FormatInt()函数,可将int型数据转换成指定进制并以字符串的形式返回,语法“strconv.FormatInt(num,10)”。

如何将string转换为int类型 如何将string转换为int类型 Aug 02, 2023 am 10:59 AM

将string转换为int类型的方法:1、使用内置函数int();2、使用try-except处理异常;3、使用正则表达式。

See all articles