如何将文字用php转换成图片?

如何将文字用php转换成图片?,第1张

header ("Content-type: image/png")

function autowrap($fontsize, $angle, $fontface, $string, $width) {

// 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度

$content = ""

// 将字符串拆分成一个个单字 保存到数组 letter 中

for ($i=0$i<mb_strlen($string)$i++) {

$letter[] = mb_substr($string, $i,1,'utf-8')

}

foreach ($letter as $l) {

$teststr = $content." ".$l

$testbox = imagettfbbox($fontsize, $angle, $fontface, $teststr)

// 判断拼接后的字符串是否超过预设的宽度

if (($testbox[2] >$width) &&($content !== "")) {

$content .= "\n"

}

$content .= $l

}

return $content

}

$text = $_GET['text']//传过来的要处理的文字

$text = autowrap(14, 0, "msyh.ttf", $text, 250)// 自动换行处理

$im = imagecreate(278,350)

$background = imagecolorallocate($im, 255, 0, 0)

imagecolortransparent($im,$background) //imagecolortransparent() 设置具体某种颜色为透明色,若注释

$A = "img/".$_GET['mo'].".png"

$black = imagecreatefromstring(file_get_contents($A))

$white = imagecolorallocate($black,0x66,0x66,0x66)

imagettftext($black,12,0,30,55,$white,"msyh.ttf",$text)//字体设置部分linux和windows的路径可能不同

imagepng($black)//文字生成的图

需要在php端处理base64字符串里的头部信息

贴一段我正在用的

php($stream是你传上来的base64

       //获取扩展名和文件名

        if (preg_match('/(?<=\/)[^\/]+(?=\)/',$stream,$pregR)) $streamFileType ='.' .$pregR[0]  //读取扩展名,如果你的程序仅限于画板上来的,那一定是png,这句可以直接streamFileType 赋值png

        $streamFileRand = date('YmdHis').rand(1000,9999)    //产生一个随机文件名(因为你base64上来肯定没有文件名,这里你可以自己设置一个也行)

        $streamFilename = $upPath."/".$streamFileRand .$streamFileType

        //处理base64文本,用正则把第一个base64,之前的部分砍掉

        preg_match('/(?<=base64,)[\S|\s]+/',$stream,$streamForW)

        if (file_put_contents($streamFilename,base64_decode($streamForW[0]))===false) Common::exitWithError("文件写入失败!","")//这是我自己的一个静态类,输出错误信息的,你可以换成你的程序

字符串,假设随机命名,如果你不要随机命名,可以改streamFileRand 的值,$upPath是你上传路径):

// 将图片转换成字符串 File f = new File("f:\\Vista.png") FileInputStream fis = new FileInputStream( f ) byte[] bytes = new byte[fis.available()] fis.read(bytes) fis.close() // 生成字符串 String imgStr = byte2hex( bytes ) System.out.println( imgStr) // 将字符串转换成二进制,用于显示图片 // 将上面生成的图片格式字符串 imgStr,还原成图片显示 byte[] imgByte = hex2byte( imgStr ) InputStream in = new ByteArrayInputStream( imgByte ) byte[] b = new byte[1024] int nRead = 0 while( ( nRead = in.read(b) ) != -1 ){


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7334467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存