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 ){欢迎分享,转载请注明来源:内存溢出
评论列表(0条)