PHP自定义生成图片——静态

版权声明:本文为博主原创文章,可以转载,但必须注明来源。 https://blog.csdn.net/qq_40176716/article/details/84329825

大家有没有发现,许多的表情都是快速生成的,并不是人们打开PS等P图软件一个个P的

这篇博客先来讲解PHP+html简单生成静态图片

拿啥图装X或者来示范呢

嘿嘿

原始图
原始图

哈哈,CSDN博客,应该有代表性了吧

然后,想想修改啥

访问。。排名。。名字。。等等

emmm

demo文件目录

解释下:

bootstrap是一个开源的UI,说白了就是让网页变得好看的一个东西,可以忽略(主要是html太难看看着不舒服,虽然还是不好看)

bg.jpg 是背景图片,我们需要在这个上面进行编辑

boke.html 表单提交界面

csdn.php 生成图片界面(主要的)

demo.jpg  就是上面的原始图

index.php 显示界面

put.html 输出图片界面

stsong.ttf 字体文件,这个是宋体

bg.jpg如下

bg

我们把需要更改的地方先处理掉,最上面的那个懒得弄了,简单介绍

boke.html

先引入了bootstapUI,然后加入了一个图片,就是原始图显示,加入一个表单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>生成CSDN博客图片</title>
    
    <link href="bootstrap/css/bootstrap.css" rel="stylesheet">
</head>
<body>

<img src="demo.jpg" width="50%" style="margin:80px 25% 80px 25%;"/>

<form class="form-horizontal" role="form" method="get" action=csdn.php>
    <div class="form-group" >
        <label class="col-sm-4 control-label">CSDN名称</label>
        <div class="col-sm-5">
            <input type="text" name="name" class="form-control" placeholder="请输入CSDN名字">
        </div>
    </div>

    <div class="form-group">
        <label class="col-sm-4 control-label">访问人数</label>
        <div class="col-sm-5">
            <input type="text" name="people" class="form-control" placeholder="请输入访问人数">
        </div>
    </div>

    <div class="form-group">
        <label class="col-sm-4 control-label">排名</label>
        <div class="col-sm-5">
            <input type="text" name="ranking" class="form-control" placeholder="请输入排名">
        </div>
    </div>

    <div class="form-group">
        <label class="col-sm-4 control-label">积分</label>
        <div class="col-sm-5">
            <input type="text" name="integral" class="form-control" placeholder="请输入积分">
        </div>
    </div>

    <div class="form-group" >
        <div class="col-sm-offset-4 col-sm-5">
            <button type="submit" class="btn btn-info btn-block" >提交生成</button>
        </div>
    </div>

</form>

</body>
</html>

csdn.php

这里是引用的php的GD库写的

主要的方法是imageTtfText,我写的不详细,不过我找到了一个不错的

可以了解imageTtfText——传送

什么xy啊可以在ps中取出来

<?php
/**
 * Created by PhpStorm.
 * User: 莫言情难忘
 * Date: 2018/11/21
 * Time: 21:10
 */
header("content-type:image/jpeg");
$name = $_GET['name']?$_GET['name']:"莫言情难忘";
$people   = $_GET['people']?$_GET['people']:"99万+";
$ranking = $_GET['ranking']?$_GET['ranking']:"99万+";
$integral = $_GET['integral']?$_GET['integral']:"666666";

$im = imagecreatetruecolor(384, 438);           // 设置画布
$bg = imagecreatefromjpeg('bg.jpg');   // 设置背景图片
imagecopy($im,$bg,0,0,0,0,384,438);             // 将背景图片拷贝到画布相应位置
imagedestroy($bg);                              // 销毁背景图片
$font = __DIR__ . '/stsong.ttf';               // 设置字体             // 设置字体,指向ttf文件
$blacka = imagecolorallocate($im, 15, 23, 25);  // 颜色

/* 写入内容 */
imagettftext($im, 15, 0, 96, 138, $blacka, $font,$name );       // 写入名称
imagettftext($im, 15, 0, 97, 138, $blacka, $font,$name );       // 这里x+1的原因是:这里字体应该设置为粗体,我懒得找了,直接x+1实现粗体这个方式

imagettftext($im, 15, 0, 252, 325, $blacka, $font, $people);        // 写入人数
imagettftext($im, 15, 0, 253, 362, $blacka, $font, $ranking);  // 写入排名
imagettftext($im, 15, 0, 84, 361, $blacka, $font, $integral);      // 写入积分

imagejpeg($im);     // 生成jpeg格式图片
imagedestroy($im);  // 销毁图片

index.php

不解释了,看下吧

<?php
/**
 * Created by PhpStorm.
 * User: 莫言情难忘
 * Date: 2018/11/21
 * Time: 21:32
 */

if(isset($_GET['name'])){           // 如果用户已经输入信息,拼接生成图片
    $url = "csdn.php?name=".$_GET['name']."&people=".$_GET['people']."&ranking=".$_GET['ranking']
        ."&integral=".$_GET['integral'];
    include 'put.html';  // 引入生成图片页面
}else{
    include 'boke.html';       // 引入填写表单页面
}

put.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>生成成功</title>
</head>
<body>
<img src="<?php echo $url ?>" />
</body>
</html>

最终结果是

很多东西都可以替换,我只是懒而已,写个博客太费力了,毕竟我是理科生。。。

链接: https://pan.baidu.com/s/1zEOL8b9oS9pD3t52jMwrag

提取码: 6666 

猜你喜欢

转载自blog.csdn.net/qq_40176716/article/details/84329825