php imagick svg转成jpg

php imagick svg转成jpg

  public function svgtojpg()
    {
        $image    = '<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg width="400" height="300" viewBox="0,0,40,30" style="border:1px solid #cd0000;" version="1.1"
xmlns="http://www.w3.org/2000/svg">
  <rect x="0" y="0" width="40" height="30" fill="#cd0000"/>

</svg>
';
        $filename = 'ef.jpg';
        /*  $image    = stripslashes($_POST['json']);
        $filename = $_POST['filename'];*/
        $unique = time();
        $im     = new \Imagick();
        $im->readImageBlob($image);
        $res     = $im->getImageResolution();
        $x_ratio = $res['x'] / $im->getImageWidth();
        $y_ratio = $res['y'] / $im->getImageHeight();
        $im->removeImage();
        $im->setResolution($width_in_pixels * $x_ratio, $height_in_pixels * $y_ratio);
        $im->readImageBlob($image);
        $im->setImageFormat("jpeg");
        $im->writeImage(__DIR__ . '/../../../Public/moban/images/1/humourised_'. $filename);
        $im->clear();
        $im->destroy();
    }

svg自适应写法

svg自适应写法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
    <div style="width:30%; height:3.6rem;">
     <svg width="100%" height="100%" viewBox="0,0,40,30" style="border:1px solid #cd0000;">
         <rect x="0" y="0" width="40" height="30" fill="#cd0000"/>
    </svg>
    </div>
    <script src="/moban/js/jquery.min.js"></script>
    <script type="text/javascript">
   (function(doc, win) {
    var docEl = doc.documentElement,
        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
        /*如果屏幕尺寸发生了变化就会立即更新*/
        recalc = function() {
            /*     var clientWidth = docEl.clientWidth;*/
            var clientWidth = parseInt($('body').width());
            if (!clientWidth) return;
            docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';
        };
    if (!doc.addEventListener) return;
    /*如果窗口改变了大小 手机旋转了都会重新修改font-size属性*/
    win.addEventListener(resizeEvt, recalc, false);
    doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);    	
    $(function() {
        $('.dds').on('click', function() {
            $(this).attr('fill', 'green');
        })
    })
 

    </script>
</body>

</html>

html5 svg实现不规则形状图片触发事件

html5 svg实现不规则形状图片触发事件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
   <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"  class="dds" />
</svg>
<script src="/moban/js/jquery.min.js"></script>
<script type="text/javascript">
    $(function(){
        $('.dds').on('click',function(){
            $(this).attr('fill','green');
        })
    })
</script>
</body>

</html>

javascript获取上传图片的大小

javascript获取上传图片的大小

<input id="file" type="file">  
<input id="Button1" type="button" value="button" onclick="check()">  
<script>  
window.check=function(){  
var input = document.getElementById("file");  
if(input.files){  
                //读取图片数据  
  var f = input.files[0];  
  var reader = new FileReader();  
  reader.onload = function (e) {  
      var data = e.target.result;  
      //加载图片获取图片真实宽度和高度  
      var image = new Image();  
      image.onload=function(){  
          var width = image.width;  
          var height = image.height;  
          alert(width+'======'+height+"====="+f.size);  
      };  
      image.src= data;  
  };  
      reader.readAsDataURL(f);  
  }else{  
      var image = new Image();   
      image.onload =function(){  
          var width = image.width;  
          var height = image.height;  
          var fileSize = image.fileSize;  
          alert(width+'======'+height+"====="+fileSize);  
      }  
      image.src = input.value;  
  }  
}  
</script>  

win7 安装php插件imagick

 

 

win7 安装php插件imagick

 

安装步骤:

步骤一:先安装好扩展包

之所以先安装扩展是因为扩展的版本要与软件版本对应,而扩展版本出来的速度比软件版本要慢得多,所以总是没法支持最新版本的软件,因此最好是根据自己安装的扩展来选择安装的ImageMagick软件版本。

首先Imagic的php扩展包下载地址:http://pecl.php.net/package/imagick

首先根据你自己的php版本选择,如果不知道自己的版本可以查看phpinfo,下面我截图自己的给个示范:

下面红框标识的地方都是要注意的,最上面是php版本,我的是5.5.30版本的,另外是服务器环境是x86的,也就是32位的,如果这里是64就是64位的,要注意。

再接着就是看php的安全线程情况:disabled是关闭状态,enable是开启状态,我的安全线程是关闭的,这里一定要留意

下面来看上面的下载页面是什么情况:这里有最新的各个版本imagick的php扩展,也写明了要求的版本,这里支持的ImageMagick版本是6.5.3-6.10的,并且php版本要高于5.4。

如果你的php版本低于这个,那么可能你需要找更低的扩展版本了,而且软件的版本也随之更低,这篇博文与你的安装情况应该是有出入的,顶多做个参考,例如低版本的ImageMagick是需要手动进行系统变量path配置的,高版本的都自动安装时勾选了自动配置了。

好了下面进入上面给的扩展下载页面会看到如下图片的显示:

红框里是我选择的版本,基本上这个是最新的且是稳定版本所以还是很好的选择,当然也可以根据自己的情况选择其他的版本,但注意选择stable稳定版本比较好,点击蓝色windows标识的DDL进入windows的版本选项,下面有截图。

根据上面我们看phpinfo得到的各个参数,这里选择php5.5版本的,并且是Non Thread Safe版本,同时32位,因此应该选择红框里的版本下载。

下载完毕后我们来看看里面有些什么东西:

用红框标识的都是在php安装imagick扩展所需要用到的:

1)最下面的php_imagick.dll放入php安装文件夹的ext扩展文件夹内

2)上面的dll文件直接放入php安装文件夹,如果是phpstudy多版本的php话,放入自

ps:这个地方同样dll还要放到apache里的bin目录里面 切记

己使用的版本对应的文件夹,例如php55n就是指php5.5以上但不高于5.6的版本

再来就是改php的配置文件,打开php.ini文件,像下图那样加上extension=php_imagick.dll的扩展配置。

完成这些配置后,重启电脑和服务器再打开phpinfo就可以看到imagick的扩展了,如果phpinfo里没有imagick则标识扩展表示没有安装成功,错误的可能性是服务器参数和php参数与imagick扩展参数不一致导致,因此检查上述的版本是否对应一致。

然后看phpinfo里面的imagick

查看这个Imagick compiled with ImageMagick version这个参数 ImageMagick 6.8.9-1 Q16 x86 2014-05-08 要安装这个 版本一定要对应 装好以后

 

需要 新建一个系统环境变量名为MAGICK_HOME,值为E:\你的imagick路径\modules\coders, 这步主要用来定位imagemagick的module,很重要。( 否则支持的图片格式数量默认为0 ImageMagick number of supported formats:  => 0 )

 

然后重启(必须重启)

然后再看PHPinfo ImageMagick supported formats 就会出现信息了 就是安装完成了 可以用了

如果没有信息 那就没办法了

 

这个是所有imagick历史版本 http://ftp.icm.edu.pl/packages/ImageMagick/binaries/

 

查看redis占用内存大小的方法

查看redis占用内存大小的方法

redis-cli 
auth 密码
info
# Memory

used_memory:13490096 //数据占用了多少内存(字节 byte)

used_memory_human:12.87M //数据占用了多少内存(带单位的,可读性好)

used_memory_rss:13490096  //redis占用了多少内存

used_memory_peak:15301192 //占用内存的峰值(字节)

used_memory_peak_human:14.59M //占用内存的峰值(带单位的,可读性好)

used_memory_lua:31744  //lua引擎所占用的内存大小(字节)

mem_fragmentation_ratio:1.00  //内存碎片率

mem_allocator:libc //redis内存分配器版本,在编译时指定的。有libc、jemalloc、tcmalloc这3种。

看 used_memory就行了

PHP判断是否为手机端的方法

PHP判断是否为手机端的方法

private function ismobile()
{
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
if (isset($_SERVER[‘HTTP_X_WAP_PROFILE’])) {
return true;
}

//此条摘自TPM智能切换模板引擎,适合TPM开发
if (isset($_SERVER[‘HTTP_CLIENT’]) && ‘PhoneClient’ == $_SERVER[‘HTTP_CLIENT’]) {
return true;
}

//如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
if (isset($_SERVER[‘HTTP_VIA’]))
//找不到为flase,否则为true
{
return stristr($_SERVER[‘HTTP_VIA’], ‘wap’) ? true : false;
}

//判断手机发送的客户端标志,兼容性有待提高
if (isset($_SERVER[‘HTTP_USER_AGENT’])) {
$clientkeywords = array(
‘nokia’, ‘sony’, ‘ericsson’, ‘mot’, ‘samsung’, ‘htc’, ‘sgh’, ‘lg’, ‘sharp’, ‘sie-‘, ‘philips’, ‘panasonic’, ‘alcatel’, ‘lenovo’, ‘iphone’, ‘ipod’, ‘blackberry’, ‘meizu’, ‘android’, ‘netfront’, ‘symbian’, ‘ucweb’, ‘windowsce’, ‘palm’, ‘operamini’, ‘operamobi’, ‘openwave’, ‘nexusone’, ‘cldc’, ‘midp’, ‘wap’, ‘mobile’,
);
//从HTTP_USER_AGENT中查找手机浏览器的关键字
if (preg_match(“/(” . implode(‘|’, $clientkeywords) . “)/i”, strtolower($_SERVER[‘HTTP_USER_AGENT’]))) {
return true;
}
}
//协议法,因为有可能不准确,放到最后判断
if (isset($_SERVER[‘HTTP_ACCEPT’])) {
// 如果只支持wml并且不支持html那一定是移动设备
// 如果支持wml和html但是wml在html之前则是移动设备
if ((strpos($_SERVER[‘HTTP_ACCEPT’], ‘vnd.wap.wml’) !== false) && (strpos($_SERVER[‘HTTP_ACCEPT’], ‘text/html’) === false || (strpos($_SERVER[‘HTTP_ACCEPT’], ‘vnd.wap.wml’) < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { return true; } } return false; }