邪罗刹的菠萝阁


> 最近小邪玩了一下PHP,很不错,代码的可读性很高,如果有兴趣学习其实也不是很难的。
> 话说上次做了一个直接提供PR图片的API,蛮不错的,但是看 Webmasterhome 已经有了。

> 还以为白做了呢,不过发现那个貌似没用掉了,怎么样都不肯显示,所以,嘿嘿嘿嘿。
> 这次打算做另外一个API,需要用到图片合并功能,O(∩_∩)O,先保密,下篇文章揭晓喔。

1. Image 图像函数说明

2. Image 图像函数所支持的图像格式

3. 合并图像所需函数

> Getimagesize - 取得图像大小
> Imagecreatefromgif - 从 GIF 文件或 URL 新建一图像
> Imagecreatefromjpeg - 从 JPEG 文件或 URL 新建一图像
> Imagecreatefrompng - 从 PNG 文件或 URL 新建一图像

> Imgcopy - 拷贝图像的一部分

> Imagegif - 以 GIF 格式将图像输出到浏览器或文件
> Imagejpeg - 以 JPEG 格式将图像输出到浏览器或文件
> Imagepng - 以 PNG 格式将图像输出到浏览器或文件

4. Imgcopy 函数详解

5. PHP header() 函数详解

6. 首先要将图片载入字符串中

$source = '1.png';
$source1 = '2.png';
$target = 'emp.png';

$source_img = imagecreatefrompng($source);
$source_img1 = imagecreatefrompng($source1);
$target_img = imagecreatefrompng($target);

> 首先定义图像的地址为变量以作为 Imagecreatefrompng 函数的参数。
> 当然直接把地址填到函数里也行的,我这样做是我博客页面宽度不够嘛,呵呵。
> 记得直接填写的时候要加上俩个引号在两边喔,我个人比较喜欢单引号,忌混用。

> 当然 Imagecreatefromgif 和 Imagecreatefrompng 也是可以用的喔。
> 这就要看你要处理哪种格式的图像咯,风景方面我比较看中画质,所以用 PNG。

> Emp.Png 是一张完全空白的图片,大小为两个来源图之和,为我们合并其他图像做准备。
> 当然也可以不用,用函数创建一个,但是从学习角度来说,这样子应该容易理解一点。
> 然后 1.Png 2.Png 两个文件是要被合并的图片。

7. 开始横向合并图像

$size = getimagesize($source);
$size1 = getimagesize($source1);

imagecopy ($target_img,$source_img,0,0,0,0,$size[0],$size[1]);
imagecopy ($target_img,$source_img1,$size[0],0,0,0,$size1[0],$size1[1]);

> 用 Getimagesize 函数获得图像的尺寸,产生的是一个数组,$size[0]是宽,$size[1]是高。
> 我们把 Source_img 放到 Target_img 的左上角,坐标为 0:0 的位置。
> 然后把 Source_img1 放到 Target_img 中 Source_img 的右边。
> 所以横坐标为 Source_img 的宽度。

8. 生成或者打印图像

Header("Content-type: image/png");
imagepng($target_img);

> 在这里说的打印当然不是用打印机咯,呵呵,是显示在你的屏幕上。
> 先使用 Header 函数向客户端发送原始的 HTTP 报头,告诉他你这个图片是PNG格式。
> 然后使用 imagepng 输出即可,就会显示在屏幕上咯,可以右键另存为来着,嘿嘿。

imagepng($target_img,'3.png');

> 当然也可以保存为文件呢,这样就好咯,相对路径也没问题的喔。

> O(∩_∩)O,其实写博有利于学习,你要让别人听懂,自己就一定要弄透彻,才能讲解出来。

9. 欢迎来 Follow 我的 Twitter @AngelSolo

Leave a comment
58 Comments.
  1. 这是什么水果呀,有点像tecoberry

    @
  2. QiQiBoY Mozilla Firefox Windows 坐板凳!#2

    这个怎么用,啥地方能用到呢?

    @
    • @QiQiBoY , 可以很方便的生成图片计数器喔 ~
      或者某些图自动覆盖啊 ~
      还是加水印都可以用到的喔 ~ :smile:

      @
    • @QiQiBoY , 嘿嘿 这个可以达到水印效果的 ~

      bool imagecopymerge ( resource $dst_im , resource $src_im ,
      int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )
      

      将 src_im 图像中坐标从 src_x ,src_y 开始,宽度为 src_w ,
      高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。
      两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。
      当 pct = 0 时,实际上什么也没做,
      当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,
      它对真彩色图像实现了 alpha 透明。

      @
  3. 阿吴 Google Chrome Windows 躺地板!#3

    看不明白啊!

    @
  4. 一米 Internet Explorer Windows 天花板!#4

    学习了,每天一看,每天学点。

    @
  5. 第三眼 Mozilla Firefox Windows 下水道!#5

    难道以后真的会诞生网页版ps? :biggrin:

    @
  6. kongzi Internet Explorer Windows 地心!#6

    你注意到GOOLGE上面的那个动画了吗?就是搜索条下面那个,你把鼠标放到视频、图片等各种链接上,会有一个圆点变成图案,很好玩的。是不是和博主的是一个道理

    @
  7. PHP居然有这函数。。。。高,实在是高

    @
    • @万戈 , 哈哈 爱死PHP鸟 ~ :razz:

      @
    • @万戈 , 在 wp-includes/link-template.php 文件中:
      修改:

      $defaults['base'] = user_trailingslashit(trailingslashit(get_permalink())
      . 'comment-page-%#%', 'commentpaged');
      

      为:

      $defaults['base'] = user_trailingslashit(get_permalink()
      . 'comment-page-%#%', 'commentpaged');
      

      大概在1628行 ~ :biggrin:

      @
  8. 有点像CSS加水印的

    @
  9. 代码!代码.期待ing

    @
  10. ( ⊙o⊙ )哇 你技术不错啊```

    @
  11. 用PHP来合拼图片不如用PS快。。

    @
  12. 哇,不错,自动可以加水印。。。 :rolleyes:

    @
  13. 看到技术贴我就犯病,不过这个功能很有趣

    @
  14. 话说PHP很好很强大。。

    @
  15. 可惜我不会啊
    多希望我也可以写好程序啊

    @
  16. PHP真的不是一般的强大,这就是技术吧。

    @
  17. 水平越来越高了。。。。

    @
  18. 很牛很强大!

    @
  19. 看来 你每天都在研究技术哦。。。

    @
  20. 这个有技术,有点意思啊,但是想不到哪里能应用上这个。

    @
  21. 看了那么多,才知道PS来的方便,呵呵

    @
    • @阿里 , 汗 我为下一篇文章做铺垫来着 ~
      下一篇有关显示数字 ~
      0 - 999999 随意选 使用 PHP 的话可以达到即时组合的目的 ~
      用 PS 做 999999 张图片就杯具了 ~

      @
  22. 每次来你的博客,我都感觉自己会的东西实在是太少了,不知道什么时候才会学出一点皮毛

    @
  23. 你的博客好多人留言阿,羡慕 :grin:

    @

Leave a Reply


[ Ctrl + Enter ]