php 文字转图片-----长微博功能开发
来源:互联网 发布:暴风影音官网windows版 编辑:程序博客网 时间:2024/05/21 06:43
这个功能开发主要涉及几个问题:
1、文字换行
2、汉字乱码问题
1、文字换行,这里面我纠结了一阵之后,发现主要的问题在于 php 里面的单引号和双引号的问题。
我再字符串 ‘我爱中国’ (单引号) 里面添加 \n 作为换行处理,发现 怎么也不成功, 换成 "我爱\n中国" (双引号) 就可以了
主要就是php 单引号和双引号的区别。可能刚开始你会觉得不都是引用字符串没有什么区别。其实,区别大了。
单引号 引起来的字符串 是不对里面的特殊字符串做解析的,'我爱\n中国' 用 echo 打印出来 就是 我爱\n中国 没有做换行处理。而用双引号,是会做换行处理的。
当然,单引号执行的效率会高一些,如果在遇到一些需要对特殊字符串处理的地方还是要用双引号。
2. 汉字乱码的问题,纠结了很久,网上找到 有的说是要全部转为utf-8的编码 包括.php文本,输出的字符串等。最后这些都做了,还是乱码。有的说是,php 编译的时候是带着日本的字符编码的,所以会出错,但是我不可能去重新编译php程序。最后,找到的解决办法是,换了一种字体-------- simhei.ttf 。很神奇,只能说,这个是字体的原因。
附上 ,我写的和在网上找的代码的综合体
<?php
namespace Addons\Word2Png\Controller;
use Home\Controller\AddonsController;
use Think;
class Word2PngController extends AddonsController{
public function index(){
$this->display(T('Addons://Word2Png@Word2Png/index'));
}
/**
* 图片转文字算法
* @author hani <[email]>
*/
public function url(){
$words = I('words');
echo $res = addons_url('Word2Png://Word2Png/change',array('words'=>$words)) ;
}
public function change(){
//$words = I('words');
$words = "顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶速度是多少ssssssssssssssssssssssss" ;
//echo get_str_num($words);die();
// $words = mb_convert_encoding( $words , 'UTF-8', 'GB2312' );
//die();
$font = 30; //字体宽
$x = 306; //图片宽
$temp = $font * ceil( (get_str_num($words)*$font)/$x );
$y = $temp ? $temp: $font ; //图片的高
$words = $this->autowrap($font,0,"./Arial/arial.ttf" ,$words,$x);
$im = @imagecreate($x, $y);
$background_color = imagecolorallocate($im, 255, 255, 255);
$text_color = imagecolorallocate($im, 233, 14, 91);
header("Content-type: image/png");
ImageTTFText($im, 15, 0, 40, 20, $text_color, "./Arial/simhei.ttf", $words);
imagepng($im);
imagedestroy($im);
}
function autowrap($fontsize, $angle, $fontface, $string, $width) {
// 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度
$content = "";
// 将字符串拆分成一个个单字 保存到数组 letter 中
for ($i=0;$i<get_str_num($string);$i++) {
$letter[] = msubstr($string, $i, 1,'utf-8',false);
}
foreach ($letter as $l) {
$teststr = $content." ".$l;
$testbox = imagettfbbox($fontsize, $angle, $fontface, $teststr);
// 判断拼接后的字符串是否超过预设的宽度
if (($testbox[2] > $width) && ($content !== "")) {
$content .= " \n";
}
$content .= $l;
}
return $content;
}
}
- php 文字转图片-----长微博功能开发
- 【php】文字转图片
- iOS开发实现文字/图片的社交网络分享功能
- 用百度AI的OCR文字识别结合PHP实现了图片的文字识别功能
- PHP水印图片文字
- 图片添加文字水印功能
- WebSocket发送文字图片功能
- 利用PHP实现文字绘制到新的图片上的功能
- PHP IMG2TXT 图片转成文字
- php生成图片文字水印
- php 图片水印 文字水印
- php 字型文字写入图片
- php生成文字图片效果
- PHP上传图片功能
- php上传图片功能
- php 图片上传功能
- php 图片和文字合成图片技术
- (PHP)图片加文字和图片合成
- JAVA术语
- HDU1020
- JPDA#2:架构源码浅析
- Eclipse中出现Select at least one project解决办法
- Restoring Numbers
- php 文字转图片-----长微博功能开发
- iOS 遮罩层
- 公钥和私钥
- iOS 合并带有透明通道的视频-
- 判断环形链表
- hoj1016 Joseph's problem I
- 【Android后台操作服务怎么实现】
- java学习路线
- NSLog使用小记