php imagick蒙版做法

php imagick蒙版做法

   $image = new \Imagick();
        $image->readImage(__DIR__ . '/mengban.png');
        $watermark = new \Imagick();
        $watermark->readImage(__DIR__ . '/testmengban.jpg');
        /*$watermark->scaleImage(750, 1206, true); *///放到等比例按照宽度缩小图片 按照
        $image->compositeImage($watermark, \imagick::COMPOSITE_ATOP, 0, 0);
        $image->writeImage(__DIR__ . '/mengbanresult.png');

ps:注意蒙版和最终生成的图片都要png

这个是imagick 其他一些的教程 http://www.netingcn.com/category/imagemagick

mysql update获取主键

mysql update获取主键

SET @update_id := 0;
UPDATE mobantestinfo1 SET info2 = 'value', id = (SELECT @update_id := id)
WHERE info1 = '23a' LIMIT 1; 
SELECT @update_id;

大致思路就是首先声明一个用户变量 @update_id ,之后在update数据时要多更新一个字段,就是将当前主键值更新为当前主键值(其实就是没更新),更新主键字段并不是目的,只是为了将当前主键值赋值给@update_id,就是这句: ( SELECT @update_id := id )

如果是PDO只能分开运行mysql语句 变量多个用户之间是不会共享的 比如1个用户存了变量 还有个变量读取变量是为空的

mysql select自增变量

mysql select自增变量

SET @rownum =0;
select id,@rownum := @rownum +1 as i from ceshi order by dd desc,id desc;

变量是直接输出在结果集的

SET @rownum =0;

@rownum :=1
这2个个是变量赋值的方式

SET @rownum =0;
select i from
(select id,dd,@rownum := @rownum +1 as i from ceshi order by dd desc,id desc) as cc where id=4;
这个查询用户第几名的

php debug_backtrace方法跟踪代码调用

php debug_backtrace方法跟踪代码调用

function    string  当前的函数名,参见: __FUNCTION__。
line        integer 当前的行号。参见: __LINE__。
file        string  当前的文件名。参见: __FILE__。
class       string  当前 class 的名称。参见 __CLASS__
object      object  当前的 object。
type        string  当前调用的类型。如果是一个方法,会返回 "->"。如果是一个静态方法,会返回 "::"。 如果是一个函数调用,则返回空。
args        array   如果在一个函数里,这会列出函数的参数。 如果是在一个被包含的文件里,会列出包含的文件名。

index.php

<?php
require 'order.php';

// 获取用户订单资料
$order_id = 1000000;

$oOrder = new Order;
$order_info = $oOrder->get_order($order_id);
?>

order.php

<?php
require 'user.php';

// 订单资料
class Order{

    // 获取订单资料
    function get_order($order_id){

        $user_id = 1001;

        // 获取用户资料
        $oUser = new User;
        $user_info = $oUser->get_user($user_id);

        // 订单资料
        $order_info = array(
            'order_id' => $order_id,
            'order_name' => 'my order',
            'user_info' => $user_info,
        );

        return $order_info;

    }

}
?>

user.php

<?php
require 'message.php';

// 用户资料
class User{

    // 获取用户资料
    function get_user($user_id){

        // 获取用户讯息
        $oMessage = new Message;
        $user_message = $oMessage->get_message($user_id);

        $user_info = array(
                'user_id' => $user_id,
                'name' => 'fdipzone',
                'message' => $user_message
        );

        return $user_info;

    }

}
?>

message.php

<?php
// 用户讯息
class Message{

    // 获取用户讯息
    function get_message($user_id){

        $message = array(
            array('id'=>1, 'title'=>'message1'),
            array('id'=>2, 'title'=>'message2'),
        );

        // 加入跟踪调试
        $backtrace = debug_backtrace();
        var_dump($backtrace);

        return $message;

    }

}
?>
/message.php:15:
array (size=3)
  0 => 
    array (size=7)
      'file' => string '/user.php' (length=9)
      'line' => int 12
      'function' => string 'get_message' (length=11)
      'class' => string 'Message' (length=7)
      'object' => 
        object(Message)[3]
      'type' => string '->' (length=2)
      'args' => 
        array (size=1)
          0 => int 1001
  1 => 
    array (size=7)
      'file' => string '/order.php' (length=10)
      'line' => int 14
      'function' => string 'get_user' (length=8)
      'class' => string 'User' (length=4)
      'object' => 
        object(User)[2]
      'type' => string '->' (length=2)
      'args' => 
        array (size=1)
          0 => int 1001
  2 => 
    array (size=7)
      'file' => string '/index.php' (length=9)
      'line' => int 8
      'function' => string 'get_order' (length=9)
      'class' => string 'Order' (length=5)
      'object' => 
        object(Order)[1]
      'type' => string '->' (length=2)
      'args' => 
        array (size=1)
          0 => int 1000000

可以看到调用过程是

1.index.php 
line 8 
class Order 
function get_order 
args int 1000000

2.order.php 
line 14 
class User 
function get_user 
args int 1001

3.user.php 
line 12 
class Message 
function get_message 
args int 1001

这个方法主要看 某个函数是调用方式是怎么样的 来解决问题的

jquery 数字滚动方法

jquery 数字滚动方法
用的是countUp.js这个插件

target = 目标元素的 ID;
startVal = 开始值;
endVal = 结束值;
decimals = 小数位数,默认值是0;
duration = 动画延迟秒数,默认值是2;

1先初始化

   var options = {  
          useEasing: true,
          useGrouping: false,
          separator: ',',
          decimal: '.',
    };
    var demo = new CountUp('few', 0, 0, 0, 0.5, options);
    if (!demo.error) {  
        demo.start();
    } else {  
        console.error(demo.error);
    }

2更新

  demo.update(6000);

详细参数看http://inorganik.github.io/countUp.js/

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>