imagecopyresampled 重采样拷贝部分图像并调整大小
发表日期:2021-07-01 08:55:58 | 来源: | | 浏览(812) 分类:GD 和图像处理 函数
imagecopyresampled
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
imagecopyresampled — 重采样拷贝部分图像并调整大小
说明
imagecopyresampled(
resource $dst_image
,
resource $src_image
,
int $dst_x
,
int $dst_y
,
int $src_x
,
int $src_y
,
int $dst_w
,
int $dst_h
,
int $src_w
,
int $src_h
): bool
imagecopyresampled() 将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。
In other words, imagecopyresampled() will take a
rectangular area from src_image
of width
src_w
and height src_h
at
position (src_x
,src_y
)
and place it in a rectangular area of dst_image
of width dst_w
and height dst_h
at position (dst_x
,dst_y
).
如果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸。坐标指的是左上角。本函数可用来在同一幅图内部拷贝(如果 dst_image
和 src_image
相同的话)区域,但如果区域交迭的话则结果不可预知。
参数
dst_image
目标图象资源。
src_image
源图象资源。
dst_x
目标 X 坐标点。
dst_y
目标 Y 坐标点。
src_x
源的 X 坐标点。
src_y
源的 Y 坐标点。
dst_w
目标宽度。
dst_h
目标高度。
src_w
源图象的宽度。
src_h
源图象的高度。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 简单的例子
这个例子会将图像调整为原有尺寸的一半。
<?php // 这个文件$filename = 'test.jpg'; $percent = 0.5; // 内容类型header('Content-Type: image/jpeg'); // 获取新的尺寸list($width, $height) = getimagesize($filename); $new_width = $width * $percent; $new_height = $height * $percent; // 重新取样$image_p = imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); // 输出imagejpeg($image_p, null, 100); ?>
以上例程的输出类似于:
示例 #2 按比例对图像重新采样
这个例子会以最大宽度高度为 200 像素显示一个图像。
<?php // 源文件$filename = 'test.jpg'; // 设置最大宽高$width = 200; $height = 200; // Content typeheader('Content-Type: image/jpeg'); // 获取新尺寸list($width_orig, $height_orig) = getimagesize($filename); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } // 重新取样$image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); // 输出imagejpeg($image_p, null, 100); ?>
以上例程的输出类似于:
注释
注意:
因为调色板图像限制(255+1 种颜色)有个问题。重采样或过滤图像通常需要多于 255 种颜色,计算新的被重采样的像素及其颜色时采用了一种近似值。对调色板图像尝试分配一个新颜色时,如果失败我们选择了计算结果最接近(理论上)的颜色。这并不总是视觉上最接近的颜色。这可能会产生怪异的结果,例如空白(或者视觉上是空白)的图像。要跳过这个问题,请使用真彩色图像作为目标图像,例如用imagecreatetruecolor() 创建的。
参见
imagecopyresized() - 拷贝部分图像并调整大小
- PHP(0)
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- gd_info 取得当前安装的 GD 库的信息(0)
- getimagesize 取得图像大小(0)
- getimagesizefromstring 从字符串中获取图像尺寸信息(0)
- image_type_to_extension 取得图像类型的文件后缀(0)
- image_type_to_mime_type 取得 getimagesize,exif_read_data,exif_thumbnail,exif_imagetype 所返回的图像类型的 MIME 类型(0)
- image2wbmp 以 WBMP 格式将图像输出到浏览器或文件(0)
- imageaffine 返回经过仿射变换后的图像,剪切区域可选(0)
- imageaffinematrixconcat Concatenate two affine transformation matrices(0)
- imageaffinematrixget Get an affine transformation matrix(0)
- imagealphablending 设定图像的混色模式(0)
- imageantialias 是否使用抗锯齿(antialias)功能(0)
- imagearc 画椭圆弧(0)
- imagebmp Output a BMP image to browser or file(0)
- imagechar 水平地画一个字符(0)
- imagecharup 垂直地画一个字符(0)
- imagecolorallocate 为一幅图像分配颜色(0)
- imagecolorallocatealpha 为一幅图像分配颜色 + alpha(0)
- imagecolorat 取得某像素的颜色索引值(0)
- imagecolorclosest 取得与指定的颜色最接近的颜色的索引值(0)
- imagecolorclosestalpha 取得与指定的颜色加透明度最接近的颜色(0)
- imagecolorclosesthwb 取得与给定颜色最接近的色度的黑白色的索引(0)
- imagecolordeallocate 取消图像颜色的分配(0)
- imagecolorexact 取得指定颜色的索引值(0)
- imagecolorexactalpha 取得指定的颜色加透明度的索引值(0)
- imagecolormatch 使一个图像中调色板版本的颜色与真彩色版本更能匹配(0)
- imagecolorresolve 取得指定颜色的索引值或有可能得到的最接近的替代值(0)
- imagecolorresolvealpha 取得指定颜色 + alpha 的索引值或有可能得到的最接近的替代值(0)
- imagecolorset 给指定调色板索引设定颜色(0)
- imagecolorsforindex 取得某索引的颜色(0)
- imagecolorstotal 取得一幅图像的调色板中颜色的数目(0)
- imagecolortransparent 将某个颜色定义为透明色(0)
- imageconvolution 用系数 div 和 offset 申请一个 3x3 的卷积矩阵(0)
- imagecopy 拷贝图像的一部分(0)
- imagecopymerge 拷贝并合并图像的一部分(0)
- imagecopymergegray 用灰度拷贝并合并图像的一部分(0)
- imagecopyresampled 重采样拷贝部分图像并调整大小(0)
- imagecopyresized 拷贝部分图像并调整大小(0)
- imagecreate 新建一个基于调色板的图像(0)
- imagecreatefrombmp 由文件或 URL 创建一个新图象。(0)
- imagecreatefromgd2 从 GD2 文件或 URL 新建一图像(0)
- imagecreatefromgd2part 从给定的 GD2 文件或 URL 中的部分新建一图像(0)
- imagecreatefromgd 从 GD 文件或 URL 新建一图像(0)
- imagecreatefromgif 由文件或 URL 创建一个新图象。(0)
- imagecreatefromjpeg 由文件或 URL 创建一个新图象。(0)
- imagecreatefrompng 由文件或 URL 创建一个新图象。(0)
- imagecreatefromstring 从字符串中的图像流新建一图像(0)
- imagecreatefromwbmp 由文件或 URL 创建一个新图象。(0)
- imagecreatefromwebp 由文件或 URL 创建一个新图象。(0)
- imagecreatefromxbm 由文件或 URL 创建一个新图象。(0)
- imagecreatefromxpm 由文件或 URL 创建一个新图象。(0)
- imagecreatetruecolor 新建一个真彩色图像(0)
- imagecrop Crop an image to the given rectangle(0)
- imagecropauto Crop an image automatically using one of the available modes(0)
- imagedashedline 画一虚线(0)
- imagedestroy 销毁一图像(0)
- imageellipse 画一个椭圆(0)
- imagefill 区域填充(0)
- imagefilledarc 画一椭圆弧且填充(0)
- imagefilledellipse 画一椭圆并填充(0)
- imagefilledpolygon 画一多边形并填充(0)
- imagefilledrectangle 画一矩形并填充(0)
- imagefilltoborder 区域填充到指定颜色的边界为止(0)
- imagefilter 对图像使用过滤器(0)
- imageflip Flips an image using a given mode(0)
- imagefontheight 取得字体高度(0)
- imagefontwidth 取得字体宽度(0)
- imageftbbox 给出一个使用 FreeType 2 字体的文本框(0)
- imagefttext 使用 FreeType 2 字体将文本写入图像(0)
- imagegammacorrect 对 GD 图像应用 gamma 修正(0)
- imagegd2 将 GD2 图像输出到浏览器或文件(0)
- imagegd 将 GD 图像输出到浏览器或文件(0)
- imagegetclip Get the clipping rectangle(0)
- imagegetinterpolation Get the interpolation method(0)
- imagegif 输出图象到浏览器或文件。(0)
- imagegrabscreen Captures the whole screen(0)
- imagegrabwindow Captures a window(0)
- imageinterlace 启用或禁用隔行扫描(0)
- imageistruecolor 检查图像是否为真彩色图像(0)
- imagejpeg 输出图象到浏览器或文件。(0)
- imagelayereffect 设定 alpha 混色标志以使用绑定的 libgd 分层效果(0)
- imageline 画一条线段(0)
- imageloadfont 载入一新字体(0)
- imageopenpolygon Draws an open polygon(0)
- imagepalettecopy 将调色板从一幅图像拷贝到另一幅(0)
- imagepalettetotruecolor Converts a palette based image to true color(0)
- imagepng 以 PNG 格式将图像输出到浏览器或文件(0)
- imagepolygon 画一个多边形(0)
- imagerectangle 画一个矩形(0)
- imageresolution Get or set the resolution of the image(0)
- imagerotate 用给定角度旋转图像(0)
- imagesavealpha 设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息(与单一透明色相反)(0)
- imagescale Scale an image using the given new width and height(0)
- imagesetbrush 设定画线用的画笔图像(0)
- imagesetclip Set the clipping rectangle(0)
- imagesetinterpolation Set the interpolation method(0)
- imagesetpixel 画一个单一像素(0)
- imagesetstyle 设定画线的风格(0)
- imagesetthickness 设定画线的宽度(0)
- imagesettile 设定用于填充的贴图(0)
- imagestring 水平地画一行字符串(0)
- imagestringup 垂直地画一行字符串(0)
- imagesx 取得图像宽度(0)
- imagesy 取得图像高度(0)
- imagetruecolortopalette 将真彩色图像转换为调色板图像(0)
- imagettfbbox 取得使用 TrueType 字体的文本的范围(0)
- imagettftext 用 TrueType 字体向图像写入文本(0)
- imagetypes 返回当前 PHP 版本所支持的图像类型(0)
- imagewbmp 以 WBMP 格式将图像输出到浏览器或文件(0)
- imagewebp 将 WebP 格式的图像输出到浏览器或文件(0)
- imagexbm 将 XBM 图像输出到浏览器或文件(0)
- iptcembed 将二进制 IPTC 数据嵌入到一幅 JPEG 图像中(0)
- iptcparse 将二进制 IPTC 块解析为单个标记(0)
- jpeg2wbmp 将 JPEG 图像文件转换为 WBMP 图像文件(0)
- png2wbmp 将 PNG 图像文件转换为 WBMP 图像文件(0)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)