一、PHP 使用内置函数生成图片的方法详解
①、简单介绍
主要介绍了PHP使用内置函数生成图片的方法,结合实例形式详细分析了php生成图片的步骤与相关实现技巧
②、代码
//创建一张空图片:参数为宽度和高度
$myImage = ImageCreate(400,60);
//创建颜色
$white = ImageColorAllocate($myImage, 255, 255, 255);
$black = ImageColorAllocate($myImage, 0, 0, 0);
$red = ImageColorAllocate($myImage, 255, 0, 0);
$green = ImageColorAllocate($myImage, 0, 255, 0);
$blue = ImageColorAllocate($myImage, 0, 0, 255);
//为图片添加文字
imagettftext($myImage, 12, 0, 5, 20, $black, "stxingka.ttf", "这里是要显示的内容");
//生成图片
imagepng($myImage,"xxx.jpg");
二、php 输出图片
$fileres = file_get_contents("https://www.lulublog.cn/images/userImage/defaultImage.jpg");
header("Content-type: image/jpeg");
echo $fileres;
三、PHP 中 Orientation 属性判断上传图片是否需要旋转
①、问题来源
当使用苹果的iOS系统拍照上传图片的时候,可能会遇到图片被旋转的问题,这主要是取决于你拍照时拍照按钮的位置。假设拍照时你把手机旋转过来底部朝上,那拍出来的照片也是被旋转了的。
②、代码(下面的代码将确保所有上传的照片在上传时都能是正确定向:)
$image = imagecreatefromstring(file_get_contents($_FILES["image_upload"]["tmp_name"]));
$exif = exif_read_data($_FILES["image_upload"]["tmp_name"]);
if(!empty($exif["Orientation"])) {
switch($exif["Orientation"]) {
case 8:
$image = imagerotate($image,90,0);
break;
case 3:
$image = imagerotate($image,180,0);
break;
case 6:
$image = imagerotate($image,-90,0);
break;
}
}
②、抓取远程图片到本地,可以用什么函数?
file_get_contents、curl
四、使用 phpQrCode 生成二维码
4.1、下载 qrcode
放置于服务器根目录
4.2、在服务器根目录新建 index.php
include 'phpqrcode/qrlib.php';
$url = 'https://www.lulublog.cn';
/*
* 生成png 格式的文件并保存
* 参数详解
* 参数1 一个二维码的数据信息 可以是数值 网址等等数据
* 参数2 生成的二维码保存的文件名称(图片保存位置
* 参数3 容错级别 QR_ECLEVEL_L
* 参数4 生成图片的大小
* 参数5 二维码边缘大小
* 以下分别为大小不同的图片生成实例
*/
QRcode::png($url,'text7.png', QR_ECLEVEL_L, 7,2);
echo '';
QRcode::png($url,'text6.png', QR_ECLEVEL_L, 6,2);
echo '';
QRcode::png($url,'text5.png', QR_ECLEVEL_L, 5,2);
echo '';
QRcode::png($url,'text4.png', QR_ECLEVEL_L, 4,2);
echo '';
QRcode::png($url,'text3.png', QR_ECLEVEL_L, 3,2);
echo ''
五、php二维码识别, 不需要第三方扩展
5.1、下载
5.2、使用
include_once('./php-qr-decoder/lib/QrReader.php');
$qrcode = new QrReader('path/to_image'); //图片路径
$text = $qrcode->text(); //返回识别后的文本
//需要PHP >= 5.3 + GD Library
六、emojione & emojionearea
6.1、emojione
①、emojione 是什么
这是一款可以将 emoji 转为 Unicode 码进行存储,然后使用的时候转为 image 的插件
②、实践
下载我从官网压缩好的文件,运行 index.php 的即可看到神奇的事情。
使用 $client->shortnameToUnicode 将手机端输入的 emoji 转为 unicode 码存储
然后使用 $client->toImage 将 unicode 码转为 emoji 图片
下图是我在本地运行后的结果
6.2、3种方法轻松处理php开发中emoji表情的问题
用5.1方式更友善
背景:做微信开发的时候就会发现,存储微信昵称必不可少。可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了。
一般Mysql表设计时,都是用UTF8字符集的。把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串。这是怎么回事呢?
原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了。这要怎么办呢?我来介绍几种方法。
解决方案:
①、使用utf8mb4字符集
如果你的mysql版本>=5.5.3,你大可直接将utf8直接升级为utf8mb4字符集。这种4字节的utf8编码可完美兼容旧的3字节utf8字符集,并且可以直接存储emoji表情,是最好的解决方案。至于字节增大带来的性能损耗,我看过一些评测,几乎是可以忽略不计的
②、使用base64编码
如果你因为某些原因无法使用utf8mb4的话,你还可以使用base64来曲线救国。使用例如base64_encode之类的函数编码过后的emoji可以直接存储在utf8字节集的数据表中,取出时decode一下即可。
③、干掉emoji表情
emoji表情是个麻烦的东西,即使你能存储,也不一定能完美显示。在iOS以外的平台上,例如PC或者android。如果你需要显示emoji,就得准备一大堆emoji图片并使用第三方前端类库才行。即便如此,还是可能因为emoji图片不够全而出现无法显示的情况在大多数业务场景下,emoji也不是非要不可的。我们可以适当地考虑干掉它,节约各种成本。
// 过滤掉emoji表情
function filterEmoji($str)
{
$str = preg_replace_callback(
"/./u",
function (array $match) {
return strlen($match[0]) >= 4 ? "" : $match[0];
},
$str);
return $str;
}
6.3、emojionearea
①、什么是 emojionearea
emojionearea.js 是一款可集成 EmojiOne 表情符号的 jQuery 文本编辑器插件
②、实践
下载我博主写的简易代码
下图是我在本地运行后的结果