`
muyu
  • 浏览: 223265 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP操作Imagick库

    博客分类:
  • php
PHP 
阅读更多

在一张图片上,打印8*10的数字矩阵,实现如下:

	//格子的尺寸
	$grid_font_size = 18;           //字体大小
	$grid_font_color = "#000";      //字体颜色
	$grid_width = 36;               //格子的宽度
	$grid_height = 24;              //格子的高度
	$grid_origin_x = 15;           //左上角的数字的起始横坐标
	$grid_origin_y = 98;            //左上角的数字的起始纵坐标

  #原图
  $image = new Imagick('background.jpg');
  
  #写入密保卡数据
  $tmp_grid_origin_x = $grid_origin_x;
  $tmp_grid_origin_y = $grid_origin_y;
  foreach ($pData as $k => $v){
    foreach ($v as $k_grid_data => $v_grid_data){
      $tmp_grid_origin_x += $grid_width;
      $draw = new ImagickDraw();
      $draw->setFillColor($grid_font_color);
      $draw->setFontSize($grid_font_size);
      $draw->annotation($tmp_grid_origin_x, $tmp_grid_origin_y, $v_grid_data);
      $image->drawImage($draw);
    }
    $tmp_grid_origin_x = $grid_origin_x;
    $tmp_grid_origin_y += $grid_height;
  }
  $image->writeImage($ks_ImageSrcPath. $pSN. '.jpg');

  #释放资源
  $image->destroy();
  $draw->destroy();

 

 

这样做的后果是,在每次循环的时候,都要实例化一个ImagickDraw,并执行drawImage方法,非常占用CPU资源。

可以从以下两点优化:

1. 不必每次都执行new操作,一个就够了;

2. 不必每次都执行drawImage方法,一次就够了。也就是说,annotation方法好像具有“附加”的意味,不用担心后来的覆盖掉之前的;

 

代码如下:

	      $draw = new ImagickDraw();
	      $draw->setFillColor($grid_font_color);
	      $draw->setFontSize($grid_font_size);
	      foreach ($pData as $k => $v){
	        foreach ($v as $k_grid_data => $v_grid_data){
	          $tmp_grid_origin_x += $grid_width;
	          $draw->annotation($tmp_grid_origin_x, $tmp_grid_origin_y, $v_grid_data);
	        }
          $tmp_grid_origin_x = $grid_origin_x;
          $tmp_grid_origin_y += $grid_height;
	      }
	      $image->drawImage($draw);

 

--------------------

2009-9-1 更新

--------------------

换种思路!

 

把8*10的数字矩阵看做“由80个数字、每10个换一行、每2个有一定间距”的字符串,哈!就可以从“调用80次annotation方法”减少到“调用1次”。

 

只是,我们不得不重新修改背景图的尺寸、“该字符串”在背景图的起始坐标等。

 

示例代码如下:

 

$numX = 0;
$str = '';
$tData = explode(",", $pData);
foreach ($tData as $d) {
  if (($numX++)%10 == 0) {
    $str .= "\n\n";
  }
  $str .= $d . "  "; 
}

$draw->setFillColor($grid_font_color);
$draw->setFontSize($grid_font_size);
$draw->annotation($grid_origin_x, $grid_origin_y, $str);

$image->drawImage($draw);

 

0
0
分享到:
评论

相关推荐

    php_imagick扩展 php 5.3

    PHP Imagick扩展是PHP语言中用于处理图像的强大工具,它提供了对ImageMagick库的接口,使得开发者能够执行复杂的图像操作,如图像的读取、写入、转换、编辑以及滤镜应用等。在PHP 5.3这个版本中,Imagick扩展扮演着...

    php-imagick-2.2.1

    **PHP Imagick库详解** PHP Imagick库是PHP的一个扩展,它提供了对ImageMagick库的强大接口,使得在PHP环境中进行复杂的图像处理变得轻而易举。ImageMagick是一款跨平台的开源图像处理软件,而PHP Imagick扩展则是...

    php_imagick.dll For PHP 5.2

    在PHP的开发过程中,为了处理图像、进行各种图像操作,如裁剪、旋转、合成等,开发者常常会借助于第三方库。ImageMagick是一个强大的开源跨平台图像处理库,它支持多种图像格式,并提供了丰富的API供程序调用。而PHP...

    php_imagick扩展

    PHP Imagick扩展是PHP中用于处理图像的重要工具,它提供了对ImageMagick库的接口,使PHP程序员能够执行复杂的图像操作。ImageMagick是一个强大的跨平台图像处理库,而PHP Imagick扩展则使得在Web环境中使用这些功能...

    php 5.2.6 php_imagick.dll

    标题中的"php 5.2.6 php_imagick.dll"提到了两个关键点:PHP版本5.2.6和php_imagick.dll。这涉及到PHP编程语言的一个特定扩展,即ImageMagick扩展,它允许PHP与ImageMagick图像处理库进行交互。 PHP是一种广泛使用...

    php_imagick,支持php5.2以上版本

    PHP Imagick是一款强大的图像处理库,它是PHP与ImageMagick库交互的接口。ImageMagick本身是一个开源的跨平台图像处理软件,能够读取、转换和写入多种图像格式。而PHP Imagick扩展则将这些功能引入到PHP中,为开发者...

    php_imagick-3.4.4-7.2-nts-vc15-x64.zip

    总结,PHP Imagick扩展为PHP开发人员提供了强大的图像处理能力,结合ImageMagick库,可以实现丰富的图像操作。在Windows环境下,尤其是对于PHP 7.2 x64 NTS版本,正确安装和配置Imagick扩展,能够极大提升开发效率,...

    php_imagick

    PHP Imagick是PHP中用于图像处理的一个强大库,它提供了对Adobe ImageMagick库的接口,使开发者能够执行高级的图像操作,如转换、编辑和合成图像。在64位系统上,PHP Imagick能够充分利用系统资源,处理大型图像时...

    php7.1 nts imagick 插件使用

    PHP Imagick是一个强大的图像处理库,它基于ImageMagick,提供了在PHP中操作图像的功能。这个扩展允许开发人员执行复杂的图像处理任务,包括但不限于转换、编辑和合成图像。在本篇文章中,我们将深入探讨如何在PHP ...

    windows下php配置imagick扩展

    【有文档,有两个安装软件等】php中的imagick扩展,主要实现对图片的操作与gd库都是对图片的操作的扩展,我当时用imagick的时候主要是想将格式为pdf的文件通过程序来转化成图片形式,经过一段时间的研究和探索最终...

    imagick windows dll php

    标题 "imagick windows dll php" 指涉的是在Windows环境下使用PHP集成ImageMagick库的一个过程。ImageMagick是一个强大的开源图像处理工具,而PHP的Imagick扩展则允许我们在PHP代码中调用ImageMagick的功能,进行...

    php_imagick_st-Q8.dll

    `php_imagick_st-Q8.dll`是这个扩展的动态链接库文件,用于Windows环境下运行PHP时支持`php_imagick`扩展。"Q8"表示该版本的ImageMagick使用了8位量子深度。量子深度是ImageMagick中用来衡量颜色精度的参数,8位意味...

    php_imagick.dll

    PHP Imagick扩展是用于在PHP环境中处理图像的强大的工具,它提供了对ImageMagick库的接口。ImageMagick是一个开源的跨平台图像处理库,能够读取、转换和写入多种图像格式。PHP Imagick扩展使得PHP开发者能够利用...

    php_imagick_st-Q16.dll

    Imagick是基于ImageMagick库的一个PHP接口,提供了丰富的图像处理功能,如裁剪、旋转、调整大小、添加文字、水印以及各种复杂的图像操作。本文将深入探讨PHP Imagick的核心概念、安装配置以及实际应用。 首先,`...

    php安装imagick

    Imagick是PHP的一个扩展库,它提供了强大的图像处理功能,可以进行图像的创建、编辑和转换。本文将详细讲解如何在Windows操作系统上,搭配Apache web服务器和PHP5.2.x版本来安装和配置Imagick。 首先,我们需要下载...

    php_imagick-3.4.4rc2-7.2-nts-vc15-x64.zip

    PHP Imagick是一个强大的图像处理库,它基于ImageMagick,提供了在PHP中操作图像的各种高级功能。这个压缩包"php_imagick-3.4.4rc2-7.2-nts-vc15-x64.zip"是为PHP 7.2版本构建的,非线程安全(NTS)版本,采用Visual...

    php_imagick-3.4.3-5.6-ts-vc11-x64

    PHP Imagick是一个强大的图像处理扩展,它基于Imagemagick库,提供了超过120种不同的命令行工具和函数,用于创建、编辑和合成图像。标题"php_imagick-3.4.3-5.6-ts-vc11-x64"表明这是适用于PHP 5.6版本的 Imagick...

    Apache+php5.4和IIS+php5.4环境下安装imagick

    2. **安装PHP5.4**:访问PHP官方网站,选择对应操作系统的PHP5.4版本下载,完成安装后将PHP配置文件`php.ini`加入到Apache的配置文件`httpd.conf`中。 3. **安装ImageMagick**:前往ImageMagick官方网站获取最新...

    php_imagick-3.4.4-7.3-nts-vc15-x64.zip

    标题中的"php_imagick-3.4.4-7.3-nts-vc15-x64.zip"表明这是一个PHP扩展包,用于处理图像操作,具体是PHP的Imagick扩展,版本为3.4.4,适配PHP 7.3版本,是非线程安全(NTS)版本,采用Visual C++ 15(即Visual ...

    windows php7.1 imagick扩展

    Imagick是PHP的一个扩展库,它提供了对ImageMagick图像处理库的接口,使得PHP能够执行复杂的图像操作,如图像缩放、旋转、裁剪、颜色调整以及各种特效的添加。 首先,了解`x64`和`vc14`这两个关键词。`x64`指的是64...

Global site tag (gtag.js) - Google Analytics