文档章节

php合成图片 摘抄

Menthol
 Menthol
发布于 2017/08/02 14:15
字数 932
阅读 29
收藏 0
 
  1. <?php
  2. function mergerImg($imgs) {
  3.  
  4. list($max_width, $max_height) = getimagesize($imgs['dst']);
  5. $dests = imagecreatetruecolor($max_width, $max_height);
  6.  
  7. $dst_im = imagecreatefrompng($imgs['dst']);
  8.  
  9. imagecopy($dests,$dst_im,0,0,0,0,$max_width,$max_height);
  10. imagedestroy($dst_im);
  11.  
  12. $src_im = imagecreatefrompng($imgs['src']);
  13. $src_info = getimagesize($imgs['src']);
  14. imagecopy($dests,$src_im,0,$max_height/2,0,0,$src_info[0],$src_info[1]);
  15. imagedestroy($src_im);
  16.  
  17. header("Content-type: image/jpeg");
  18. imagejpeg($dests);
  19. }
  20.  
  21. $imgs = array(
  22. 'dst' => 'http://www.wangshangyou.com/content/uploadfile/201312/b3241386050881.png',
  23. 'src' => 'http://www.wangshangyou.com/content/uploadfile/201312/72691386051117.png'
  24. );
  25.  
  26. mergerImg($imgs);

 

 

核心的思想就是getimagesize获取用户上传图片的信息

 

说明 ¶

array getimagesize ( string $filename [, array &$imageinfo ] )

getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串。

如果不能访问 filename 指定的图像或者其不是有效的图像, getimagesize() 将返回 FALSE 并产生一条 E_WARNING 级的错误。

Note:

对 JPC,JP2,JPX,JB2,XBM 和 WBMP 的支持自 PHP 4.3.2 起可用。对 SWC 的支持自 php 4.3.0 起可用。对 TIFF 的支持是 PHP 4.2.0 添加的。

Note: JPEG 2000 支持是 PHP 4.3.2 添加的。注意 JPC 和 JP2 可以有不同的色彩深度的成分。此情况下,“bits”的值是碰到的最高的位深度。此外,JP2 文件可能包含有多个 JPEG 2000 代码流,此情况下, getimagesize() 返回此文件顶层中碰到的第一个代码流的值。

Note: 本函数不需要 GD 图像库。

返回一个具有四个单元的数组。索引 0 包含图像宽度的像素值,索引 1 包含图像高度的像素值。索引 2 是图像类型的标记:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。这些标记与 PHP 4.3.0 新加的 IMAGETYPE 常量对应。索引 3 是文本字符串,内容为“height="yyy" width="xxx"”,可直接用于 IMG 标记。

 

 

 

然后在通过imagecreatetruecolor创建一个真彩色图片流

说明 ¶

resource imagecreatetruecolor ( int $width , int $height )

imagecreatetruecolor() 返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像。

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

参数 ¶

width

图像宽度。

height

图像高度。

返回值 ¶

成功后返回图象资源,失败后返回 FALSE 。

 

 

然后通过imagecreatefrompng(png的图片处理函数imagecreatefrompng,jpg的图片处理函数imagecreatefromjpeg,gif的处理函数imagecreatefromgif)由文件或 URL 创建一个新图象

说明 ¶

resource imagecreatefrompng ( string $filename )

imagecreatefrompng() 返回一图像标识符,代表了从给定的文件名取得的图像。

Tip

如已启用fopen 包装器,在此函数中, URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见支持的协议和封装协议,注意其用法及其可提供的预定义变量。

参数 ¶

filename

PNG 图像的路径。

返回值 ¶

成功后返回图象资源,失败后返回 FALSE 。

 

 

最后通过imagecopy函数将愿图片拷贝到新创建的图片上

说明

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_xsrc_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为dst_x 和 dst_y 的位置上。

 

如果需要合并多张图片只需要修改imagecopy就可以了

本文转载自:http://blog.csdn.net/qq_20599011/article/details/53064709?locationNum=2&fps=1

Menthol
粉丝 1
博文 27
码字总数 33504
作品 0
程序员
私信 提问
PHP合成多图片

微信分享接口只能分享一张图片,本文将多张图片合成一张图片。合成图片代码很简单,只要传图片名,即可生成一张合体图片。 详情演示请查看:http://www.erdangjiade.com/php/942.html...

玩千机伞的散人
2016/12/18
26
0
PHP怎么将两张图片何在一起

我可以获取一张验证码的图片,这张图片的大小是90*35的, 可是,当我使用的时候,这张图片被放大,导致这张验证码后半部分看不见 我想怎么将这张图片放到另一张图片上面,然后合成一张图片 ...

达摩码者
2013/08/25
851
2
求教,用 php gd2 库怎样给一张图片指定色块换颜色,谢谢!

有一只鞋子,被分解成几个透明背景白色前景的小块,我想用 php gd库函数合成一张完整的鞋子,在合成之前可能会针对某个小块换颜色,在网上也找不到相关解决方法,来这里请教一下高手,谢谢。...

爱在天涯
2014/09/25
957
10
各位兄弟姐妹,php 怎么可以生成一张300分辨率的图片,谢谢

大家好,我现在有这么一个需求,通过一些坐标,合成出一张新图片,这张图片要用于印刷,需要300分辨率,我通过php可以生成图片,但是都是72分辨率,我应该怎么做呢?谢谢~~

_Aaron_
2013/08/30
1K
6
PHP大文件分片上传的实现方法

一、前言 在网站开发中,经常会有上传文件的需求,有的文件size太大直接上传,经常会导致上传过程中耗时太久,大量占用带宽资源,因此有了分片上传。 分片上传主要是前端将一个较大的文件分成...

kaixin_code
2018/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员web前端分享逻辑运算

  一门计算机语言,编程的核心在于逻辑思想,当我们在编写程序的时候,逻辑是否通顺,是能否正确写出程序的关键,可以说如果你掌握了逻辑,那么你就踏入了计算机编程的大门。 &&与 || 或 ...

好程序员IT
29分钟前
1
0
我的Linux系统开始学习的过程

我的Linux系统开始学习的过程 Linux系统,不知大家是否了解。接触计算机不多或对计算机不感冒的人可能对其比较陌生,曾经的我也是。上大学前的我的确对Linux一无所知,那时候接触面窄,都没有...

linuxCool
30分钟前
1
0
让自己的网站可以被搜索

第一步:先注册一个属于自己的域名,这个域名是独一无二的。推荐到主机屋注册一个,其实在哪里注册都是一样的,但是主机屋提供免费的地址解析服务(只对在主机屋注册的域名免费)。 主机屋官...

WinkJie
32分钟前
3
0
全站加速(DCDN)- IP应用加速产品解读

5月22日下午15点,阿里云全站加速(DCDN)-IP应用加速如期发布。IP应用加速是阿里云自主研发的一款更高效、更安全、更便捷的动态加速产品,结合阿里云CDN本身的资源优势,利用就近接入、智能...

阿里云官方博客
35分钟前
1
0
k8s常用命令

1.创建deployment资源kubectl apply -f nginx.yml2.删除deployment资源kubectl delete -f nginx.yml3.查看deployment资源基本信息deployment资源(运行的服务资源)kubectl get...

平头哥-Enjoystudy
36分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部