zoukankan      html  css  js  c++  java
  • php图片上面写文字,输出图片

    <?php  
    /* 
    param $image   图象资源 
    param size     字体大小 
    param angle    字体输出角度 
    param showX    输出位置x坐标 
    param showY    输出位置y坐标 
    param font    字体文件位置 
    param content 要在图片里显示的内容 
    */  
    class showChinaText {  
        var $text = 'php网站程序开发';  
        var $font = 'fonts/simsun.ttc'; //如果没有要自己加载到相应的目录下(本地www)  
        var $angle = 0;  
        var $size = 15;  
        var $showX = 100;  
        var $showY = 160;  
          
        var $text0 = '2011 年 12 月 12 日';  
        var $angle0 = 0;  
        var $showX0 = 230;  
        var $showY0 = 200;  
          
        var $text1 = '新郎';  
        var $angle1 = 20;  
        var $showX1 = 135;  
        var $showY1 = 285;  
          
        var $text2 = '新娘';  
        var $angle2 = 20;  
        var $showX2 = 300;  
        var $showY2 = 285;  
          
        var $text3 = '北京市海淀区香格里拉酒店';  
        var $angle3 = 0;  
        var $showX3 = 120;  
        var $showY3 = 445;  
          
        var $text4 = '上午十一点整';  
        var $angle4 = 0;  
        var $showX4 = 305;  
        var $showY4 = 480;  
          
        function showChinaText($showText = '') {  
            $this->text = ! isset ( $showText ) ? $showText : $this->text;  
            $this->show ();  
        }  
        function createText($instring) {  
            $outstring = "";  
            $max = strlen ( $instring );  
            for($i = 0; $i < $max; $i ++) {  
                $h = ord ( $instring [$i] );  
                if ($h >= 160 && $i < $max - 1) {  
                    $outstring .= substr ( $instring, $i, 2 );  
                    $i ++;  
                } else {  
                    $outstring .= $instring [$i];  
                }  
            }  
            return $outstring;  
        }  
        function show() {  
            //输出头内容  
            Header ( "Content-type: image/png" );  
            //建立图象  
            //$image = imagecreate(400,300);  
            $image = imagecreatefromjpeg ( "01.jpg" ); //这里的图片,换成你的图片路径  
            //定义颜色  
            $red = ImageColorAllocate ( $image, 255, 0, 0 );  
            $white = ImageColorAllocate ( $image, 255, 255, 255 );  
            $black = ImageColorAllocate ( $image, 0, 0, 0 );  
            //填充颜色  
            //ImageFilledRectangle($image,0,0,200,200,$red);  
            //显示文字  
            $txt = $this->createText ( $this->text );  
            $txt0 = $this->createText ( $this->text0 );  
            $txt1 = $this->createText ( $this->text1 );  
            $txt2 = $this->createText ( $this->text2 );  
            $txt3 = $this->createText ( $this->text3 );  
            $txt4 = $this->createText ( $this->text4 );  
            //写入文字  
            imagettftext ( $image, $this->size, $this->angle, $this->showX, $this->showY, $white, $this->font, $txt );  
            imagettftext ( $image, $this->size, $this->angle0, $this->showX0, $this->showY0, $white, $this->font, $txt0 );  
            imagettftext ( $image, $this->size, $this->angle1, $this->showX1, $this->showY1, $white, $this->font, $txt1 );  
            imagettftext ( $image, $this->size, $this->angle2, $this->showX2, $this->showY2, $white, $this->font, $txt2 );  
            imagettftext ( $image, $this->size, $this->angle3, $this->showX3, $this->showY3, $white, $this->font, $txt3 );  
            imagettftext ( $image, $this->size, $this->angle4, $this->showX4, $this->showY4, $white, $this->font, $txt4 );  
            //ImageString($image,5,50,10,$txt,$white);  
            //显示图形  
            imagejpeg ( $image );  
            imagegif ( $image, "a2.jpg" );  
            ImageDestroy ( $image );  
        }  
    }  
    ?>  
    <?php  
      
    //使用  
    $s = new showChinaText ();  
    ?>  


    改造后版本:背景图片自定义上传

    <?php
    class ChinaText {
        
        var $font = 'simsun.ttc'; //如果没有要自己加载到相应的目录下(本地www)
        var $size = 15;
        
        var $multexts = null;
        var $bg='';
    
    function ChinaText($title_text=null,$bg='11.jpg') {
            $this->multexts = $title_text;
            $this->bg = $bg;
            
            $this->show ();
        }
    
        function show() {
            //输出头内容
            Header ( "Content-type: image/png" );
            //建立图象
            //$image = imagecreate(400,300);
            $image = imagecreatefromjpeg ( "./data/upload/".$this->bg); //这里的图片,换成你的图片路径
            //定义颜色
            $red = ImageColorAllocate ( $image, 255, 0, 0 );
            $white = ImageColorAllocate ( $image, 255, 255, 255 );
            $black = ImageColorAllocate ( $image, 0, 0, 0 );
            //填充颜色
            //ImageFilledRectangle($image,0,0,200,200,$red);
    
            foreach ($this->multexts as $tx){
                imagettftext ( 
                $image, 
                $this->size, 
                $tx['angle'], 
                $tx['showX'], 
                $tx['showY'], 
                $black, 
                $this->font, 
                $tx['text'] );
                
            }
    
            //显示图形
            imagejpeg ( $image );
            //imagegif ( $image, "a2.jpg" );
            //ImageDestroy ( $image );
        }
    }

    控制器部分:

    public function test2(){
            $array = array(
                        array('text'=>'aaaopop','angle'=>0,'showX'=>100,'showY'=>160),
                        array('text'=>'bbb成果,没有任何','angle'=>0,'showX'=>100,'showY'=>190),
                        array('text'=>'cccqqqqq踩踩','angle'=>0,'showX'=>100,'showY'=>220),
                        array('text'=>'ddd 踩踩踩踩踩','angle'=>0,'showX'=>100,'showY'=>250),
                    );
            
            $s = new ChinaText($array);
            
        }
    
    public function test3(){
            //$image = $_FILES['bg'];
            $text = $_POST['text'];
            
            //上传图片
             //上传目录
            $imagebg = $this->_upload($_FILES['bg'], '/');
            if ($imagebg['error']) {
                $this->error($imagebg['info']);
            } else {
                $data['imagebg'] = $imagebg['info'][0]['savename'];
                //echo $data['imagebg'];
            }
            
            $title['showY']=100;
            $title_text = array();
            
            for ( $i=0;$i<count($text);$i++){
                $title['text']=$text[$i];
                $title['angle']=0;
                $title['showX']=100;
                $title['showY']+=50*$i;
                $title_text[] = $title;
            }
            
            $s=new ChinaText($title_text,$data['imagebg']);
            
            
        }

    html :

    <form action="{:U('test/test3')}" method="post"  enctype="multipart/form-data">
            <span>背景图片:</span>
            <input type="file" name='bg'><br><br>
            
            <span>文字区域:</span>
            <input type="text" name="text[]"><br><br>
            <input type="text" name="text[]"><br><br>
            <input type="text" name="text[]"><br><br>
            
            <input type="submit" value="生成">
        
            
        </form>
  • 相关阅读:
    使用Newtonsoft进行JSON序列化时将枚举序列化为字符串的方法
    通过javac导出Jar包
    JAVA中JDBC连接Mysql数据库简单测试
    使用Swashbuckle.AspNetCore生成.NetCore WEBAPI的接口文档
    CentOS7中使用yum安装Nginx的方法
    Dockerfile 指令 ADD 和 COPY介绍
    Azure Web应用中设置静态虚拟目录的方法(比如部署Django需要用到)
    pip常用命令(转载)
    android发布新版忘记keystore(jks)密码终极解决方案
    IntelliJ Idea 常用快捷键列表
  • 原文地址:https://www.cnblogs.com/beyang/p/4826821.html
Copyright © 2011-2022 走看看