Skip to content

PHP文字写入图片

Posted in 未分类

说起来上次更新是大概半个月以前..我好懒啊。

这次是因为突然想弄一个图片,上面显示从hitokoto调用来的文字。大概思路是这样的。

首先从hitokoto调用,curl javascript的API,得到一串js,然后先用strip_tags()函数去除<span>,然后再用trim()函数去除其余的多余字符。

然后就有了代码,一开始并不是用curl获取的,是用get_file_contents()好像是这个..不过最后截取到中文字符就断了,所以后来用curl。

后来又出现了问题,是最后截取完成的字符串直接输出是没有问题的,但是如果生成图片的话就是乱码,后来卜卜说加上字体,于是用了微软雅黑,结果变成了漂亮的乱码…

资料翻了个遍,然后编码换来换去,最后才发现编码不应该换成utf-8,而是应该换成gb2312…我有罪..浪费了那么长时间。

最后加了缓存头,代码完成。下面上代码

<?php
$url = “http://api.hitokoto.us/rand?encode=js&charset=utf-8″;
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$contents = curl_exec($ch);
curl_close($ch);
$ma = strip_tags($contents);
$mb = trim($ma,”function hitokoto(){document.write();}”);
$height = 100;
$width = 10000;
$im = ImageCreateTrueColor($width, $height);
$white = ImageColorAllocate ($im, 255, 255, 255);
$black = ImageColorAllocate ($im, 0, 0, 0);
ImageFill($im, 0, 0, $white);
$font = ‘msyh.ttf’;
imagettftext($im, 20, 0, 20, 50, $black, $font, $mb);
header (“Content-type: image/png”);
header(“Content-Type:text/html;charset=GB2312”);
header(“Cache-Control: max-age=86400”);
ImagePng($im);
ImageDestroy($im);
?>

 

没加注释,将就着看吧…

拿去当keyfc签名了。。

还有个换行问题没解决

 

19 Comments

    • 什么时候换皮了?
      继续来围观,看了下api,用file_get_contents();应该没问题的啊。我这边测试能全部取回来。
      换行我看人家是用拆分后再一个个拼接实现的,定义好的函数在下面。

      function autowrap($fontsize, $angle, $fontface, $string, $width) {
      // 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度
      $content = “”;

      // 将字符串拆分成一个个单字 保存到数组 letter 中
      for ($i=0;$i $width) && ($content !== “”)) {
      $content .= “n”;
      }
      $content .= $l;
      }
      return $content;
      }

      2012年8月27日
      |Reply
      • 额..我的实现方法可能有点问题,那时候是直接访问javascript的页面然后把这句js给取过来做处理来着。不过一个字一个字的储存在数组里也是一个办法呢。

        至于模板是因为有个人问我要友链..然后我想起来友链好久没挂

        2012年8月27日
        |Reply
        • 快挂上我的链接……

          2012年9月4日
          |Reply
  1. admin
    admin

    2012年8月26日
    |Reply
  2. 其实我更想看看那个黑历史的

    2012年8月26日
    |Reply
    • admin
      admin

      那个还是算了。。

      2012年8月29日
      |Reply
    • 噗…干嘛文章都用图片

      2012年8月27日
      |Reply
        • 噗…部分人的奇怪癖好?QAQ..这是什么奇怪的癖好喔!喜欢看图片。。

          不过倒是可以考虑把文章标题换成图片,配上好看的字体,嗯嗯

          2012年8月27日
          |Reply
  3. ss
    ss

    博客rss出问题了 没找到留言板….

    2012年8月28日
    |Reply
  4. 呃……居然用GB2312www
    果然接触各种语言的人表示UTF-8才是王道,虽然稍微浪费那么一点存储空间w

    2012年8月31日
    |Reply
    • admin
      admin

      后来问了一下别人才知道curl获取来的东西编码默认gb2312….QAQ被坑了

      2012年8月31日
      |Reply

Leave a Reply

Your email address will not be published. Required fields are marked *