1.生成图片的代码:

  1. <?php
  2. header ("Content-type: image/png");
  3. mb_internal_encoding("UTF-8"); // 设置编码
  4. session_start();
  5. //$_SESSION['weiboContent'] = "我的微博时间轴";
  6. $text = $_SESSION['weiboContent'];
  7.  
  8. function autowrap($fontsize, $angle, $fontface, $string, $width) {
  9. // 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度
  10. $content = "";
  11.  
  12. // 将字符串拆分成一个个单字 保存到数组 letter 中
  13. for ($i=0;$i<mb_strlen($string);$i++) {
  14. $letter[] = mb_substr($string, $i, 1);
  15. }
  16.  
  17. foreach ($letter as $l) {
  18. $teststr = $content." ".$l;
  19. $testbox = imagettfbbox($fontsize, $angle, $fontface, $teststr);
  20. // 判断拼接后的字符串是否超过预设的宽度
  21. if (($testbox[2] > $width) && ($content !== "")) {
  22. $content .= "\n";
  23. }
  24. $content .= $l;
  25. }
  26. return $content;
  27. }
  28.  
  29. $bg = imagecreatetruecolor(800, 350); // 创建画布
  30. $white = imagecolorallocate($bg, 255, 255, 255); // 创建白色
  31.  
  32. // 将背景设为红色
  33. $bgc = imagecolorallocate($bg, 45, 45, 45);
  34. imagefill($bg, 0, 0, $bgc);
  35.  
  36. for($i=0;$i<100;$i++) //加入干扰象素
  37. {
  38. $randcolor = ImageColorallocate($bg,rand(0,255),rand(0,255),rand(0,255));
  39. imagesetpixel($bg, rand(0,800) , rand(0,150) , $randcolor);
  40. }
  41.  
  42. $text = autowrap(15, 0, "simsun.ttc", $text, 900); // 自动换行处理
  43.  
  44. // 若文件编码为 GB2312 请将下行的注释去掉
  45. //$text = iconv("GB2312", "UTF-8//IGNORE", $text);
  46.  
  47. imagettftext($bg, 12, 0, 10, 30, $white, "simsun.ttc", $text);
  48. $s = new SaeStorage();
  49. ob_start();
  50. imagepng($bg);
  51. $imgstr = ob_get_contents();
  52. $uid = $_SESSION["uid"];
  53. $filename = $uid.".png";
  54. $s->write("img",$filename,$imgstr);
  55. ob_end_clean();
  56. imagedestroy($bg);
  57. ?>

特别注意代码中这几行:

$s = new SaeStorage();
ob_start();
imagepng($bg);
$imgstr = ob_get_contents();
$uid = $_SESSION["uid"];
$filename = $uid.".png";
$s->write("img",$filename,$imgstr);
ob_end_clean();
imagedestroy($bg);

图片保存中只要使用imagepng相关的函数时要使用缓存,再使用sae的storage进行保存!!!

2.发布微博时获取图片url路径即可:

  1. $token = $_SESSION['token'];
  2. $weibo = new SaeTClientV2(WB_AKEY, WB_SKEY, $token);
  3. $imgurl = $s->getUrl("img",$filename);

基于新浪sae使用php生成图片发布图文微博的更多相关文章

  1. 基于新浪SAE平台的微信开发

      自己的微信公众平台开发差不多了,欢迎关注试用哦,我会不定期在那里分享技术文章! 主要功能: 输入t+中文或者英文返回对应的英中翻译 输入[m]随机来首音乐听,建议在wifi下听 输入[ly+你的留 ...

  2. 从Python爬虫到SAE云和微信公众号:二、新浪SAE上搭建微信服务

    目的:用PHP在SAE上搭建一个微信公众号的服务器. 1.申请一个SAE云账号 SAE申请地址:http://sae.sina.com.cn/  可以使用微博账号登陆,SAE是新浪的云服务,时间也比较 ...

  3. Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解

    Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756 ...

  4. 新浪SAE中文分词接口

    最近发现新浪SAE平台上竟然也提供分词功能,分词效果也还不错,由新浪爱问提供的分词服务,研究了一番,做了一个简易版的在线调用接口(get方式,非post) 官网说明:http://apidoc.sin ...

  5. [SVN Mac自带SVN结合新浪SAE进行代码管理]

    前一篇我转载了别人SVN的使用方法,前面的配置和服务器我不是很明白,自己尝试后发现我需要使用到的核心命令是下面一些. 新浪SAE提供了SVN代码管理仓库,只要进入相应应用,然后点击左侧代码管理,到最下 ...

  6. 【微信开发】 新浪SAE开发平台 注意事项

    1. 微信开发 新浪SAE开发平台 验证Token 一直失败? 这个问题困扰了一个又一个的微信学习者,现在百度到的答案有:在echo $echoStr;之前添加header('content-type ...

  7. 【网站开发】在新浪SAE上搭建一个博客

    概述 在新浪SAE上搭建一个博客 1.访问新浪SAE站点 http://sae.sina.com.cn/ 2.注册新浪SAE 3.选择应用仓库 4.选择WordPress 5.安装WordPress ...

  8. 【解决】 新浪sae固定链接404 问题

    固定链接404 固定链接是一个很重要的内容,wordpress默认的链接很复杂,也不利于搜索引擎搜索.wordpress也提供修改固定链接的功能,在设置里面[固定链接]修改. 但是,使用新浪sae的小 ...

  9. 部署新浪SAE web.py Session及图片上传等问题注意事项

    1.以下几条代码解决编码问题 import sysreload(sys)sys.setdefaultencoding('utf-8') 2.图片上传问题 需要开通sina的Storage服务,随便建个 ...

随机推荐

  1. SGU 185 Two shortest ★(最短路+网络流)

    [题意]给出一个图,求 1 -> n的2条 没有重边的最短路. 真◆神题--卡内存卡得我一脸血= =-- [思路] 一开始我的想法是两遍Dijkstra做一次删一次边不就行了么你们还又Dijks ...

  2. UVA 1515 Pool construction 水塘(最大流,经典)

    题意: 给一个h*w的矩阵,每个格子中是'#'和'.'两个符号之一,分别代表草和洞.现在要将洞给围起来(将草和洞分离),每条边需花费b元(即将一个洞包起来需要4边,将2个连续的洞包起来需要6边,省了2 ...

  3. jQuery Mobile 入门教程

    你每天都会对着它讲话,和它玩游戏,用它看新闻——没错,它就是你裤兜里的智能手机.android,黑莓还是iphone?为了让你清楚意识到究竟哪些才算是智能手机,我在下面总结了一个智能手机系统/设备的列 ...

  4. maven的pom报plugins却是的解决方法2

    Failure to transfer org.apache.maven.plugins:maven-plugins:pom:25 from https://repo.maven.apache.org ...

  5. java类加载器学习2——自定义类加载器和父类委托机制带来的问题

    一.自定义类加载器的一般步骤 Java的类加载器自从JDK1.2开始便引入了一条机制叫做父类委托机制.一个类需要被加载的时候,JVM先会调用他的父类加载器进行加载,父类调用父类的父类,一直到顶级类加载 ...

  6. delphi 数据导出到word

    procedure TFrmWeekAnalysisQry.BtnExportToExcelClick(Sender: TObject);var wordApp,WordDoc,WrdSelectio ...

  7. Hackers' Crackdown( UVA UVA 11825状压dp)

    题意:N台电脑,现在有N种服务,现在你可以在每台电脑终止一项服务,他和他相邻的电脑都会被关闭,如果一项服务在所有电脑都没运行,该项服务成功被破坏,问最多能破坏几种服务. 分析:把n个集合分成尽量多组, ...

  8. 怎么解决div覆盖内容却没覆盖的问题?

    一.在上下结构的div布局中,可能出现div覆盖div,但是内容却没有出现覆盖的现象.看看一个示例 1: <!DOCTYPE html> 2: <html> 3: <he ...

  9. 609B Load Balancing

    题意:有n本书分m个类别,现在你要买两本不属于同一类别的书,问有多少种方案. #include<iostream> #include<cstdlib> #include< ...

  10. HDU-4669 Mutiples on a circle 环形DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4669 题意:给一串数字连乘一个环,求连续的子串中组成的新的数字能被K整除的个数. 首先容易想到用DP来 ...