本节介绍一段php代码,实现输出由数字和字母组成的任意两位数。
思路分析:
若限定是两位数的话,要考虑下是否要求首位不为0,如果允许首位为零,就是36 * 36,即求全排列。
第一位有36种情况,第二位同样有36种情况。
答案便是:
第一位的36种情况乘以第二位的36种情况=>36 * 36。
若不允许首位为零,第一位则为35种情况,答案就是35 * 36。
三位四位以此类推,36 * 36 * 36(首位可以为零的三位情况)。
代码如下:
<?php /** * 生成0-9,a-z任意的二位数组合 * edit by www. */ function all(){ $jichu = array(0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g','h','i','j', 'k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'); $c = count($jichu ); for($i=1;$i<=36;$i++){ $j = $i-1; foreach($jichu as $k){ echo $k.$jichu[$j].'<br />'; } } } all(); ?>
php开发Flash在线裁剪图片生成图片的程序,通过Flash POST 图片的二进制数据给php,由php生成图片保存。
用$_POST接收数据是不行的,PHP默认只识别application/x-www.form-urlencoded标准的数据类型。
因此,对型如text/xml 或者 soap 或者 application/octet-stream 之类的内容无法解析,如果用$_POST数组来接收就会失败!
故保留原型,交给$GLOBALS['HTTP_RAW_POST_DATA'] 来接收。
另外,php://input 也可以实现此功能。
php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input和
$HTTP_RAW_POST_DATA 不能用于 enctype=”multipart/form-data”。
在Flash中使用JPGEncoder把BitMapData转成二进制,然后post给php代码。
1,php页面代码
<?php /** * 生成图片,接收二进制数据 * edit by www. */ $filename="teststream.jpg";//要生成的图片名字 $xmlstr = $GLOBALS[HTTP_RAW_POST_DATA]; if(empty($xmlstr)) $xmlstr = file_get_contents('php://input'); $jpg = $xmlstr;//得到post过来的二进制原始数据 $file = fopen("cache/pic/".$filename,"w");//打开文件准备写入 fwrite($file,$jpg);//写入 fclose($file);//关闭 ?>
2,在thinkphp中的应用;
<?php //保存头像 public function saveAvatar(){ $filename = intval($_GET['id']).'.jpg'; $xmlstr = $GLOBALS['HTTP_RAW_POST_DATA']; if(empty($xmlstr)) { $xmlstr = file_get_contents('php://input'); } if(!$xmlstr){ exit( '没有接收到数据流.' ); } //by www. $jpg = $xmlstr;//得到post过来的二进制原始数据 $file = fopen("./Public/Uploads/AVATAR/".$filename,"w");//打开文件准备写入 fwrite($file,$jpg);//写入 fclose($file);//关闭 } ?>
php实现九宫格的页面,只有一个页面在展示,但是里面的内容很多, 要求可以选择背景、天气、表情,最后生成图片格式.
思路:
1、首先,要掌握php图片处理知识。
2、其次,要掌握Php水印相关的技术。
3、前台要掌握JQUERY自定义插件,还是jquery的一些其它功能,例:ajax提交数据。
本实例主要的知识点:php图像操作。
代码地址:https://github.com/adophper/9diary
以下是部分代码:
<?php /** * 添加日志 * bgid 背景图片 * title 日志标题 * 表格标题与内容以'-|*dt*|-'分隔为1、2、3、4、6、7、8、9个表格中的信息 * 表格5相关:mid_title,emoticons * 模板id: tempid,待开发 * open: 隐私 */ //dump($_POST); $bgid = intval(htmlspecialchars($_REQUEST['bgid'])); $title = htmlspecialchars($_POST['title']); $cnt = str_replace(PHP_EOL, '',$_POST['cnt']); //标题和内容不能为空 if (!isset($title) || !isset($cnt)){ echo '标题和内容不能为空!'; } $imgid = intval($_POST['imgId']); $weatherId = intval($_POST['weatherId']); $mid_title = htmlspecialchars($_POST['mid_title']); $cnt_titles = $_POST['cnt_titles']; $tempId = intval($_POST['tempId']); $open = intval($_POST['open']); //写入图片 require_once('AppDiary.class.php'); $image = new AppDiary(); $path = dirname(__FILE__); $backimage = $path.'/images/preview/'.$bgid.'.jpg'; $weatherimg = $path.'/images/weather/'.$weatherId.'.gif'; $emoticons_img = $path.'/images/emoticons/'.$imgid.'.gif'; $contents = explode('-|*dt*|-',$cnt); $contents_title = explode('-|*dt*|-', $cnt_titles); $str = array( array($weatherimg,528,1,61,62),//天气 array($contents_title[0],35,83,146,28,'cnt'),//表格1 标题 array($contents[0],35,111,160,100,'cnt_titles'),//表格1 内容 array($contents_title[1],222,83,146,28,'cnt'),//表格2 标题 array($contents[1],222,111,160,100,'cnt_titles'),//表格2 内容 array($contents_title[2],407,83,146,28,'cnt'),//表格3 标题 array($contents[2],407,111,160,100,'cnt_titles'),//表格3 内容 array($contents_title[3],35,244,146,28,'cnt'),//表格4 标题 array($contents[3],35,273,160,100,'cnt_titles'),//表格4 内容 array($mid_title,240,235,146,38,'mid_title'),//表格5 标题 array($emoticons_img,261,283,80,80),//表格5 内容 array($contents_title[4],407,244,146,28,'cnt'),//表格6 标题 array($contents[4],407,273,160,100,'cnt_titles'),//表格6 内容 array($contents_title[5],35,409,146,28,'cnt'),//表格7 标题 array($contents[5],35,436,160,100,'cnt_titles'),//表格7 内容 array($contents_title[6],221,409,146,28,'cnt'),//表格8 标题 array($contents[6],221,436,160,100,'cnt_titles'),//表格8 内容 array($contents_title[7],407,409,146,28,'cnt'),//表格9 标题 array($contents[7],407,436,160,100,'cnt_titles'),//表格9 内容 ); //var_dump($str); $pic = $image->topaste($backimage,$str); $filename = $path.'/upfile/'.$pic; //加了一个time()主要为了防止相同的文件名 $newname = $title.'_'.time().strrchr($pic, '.'); $newfile = $path.'/upfile/'.$newname; //这里主要用于中文标题 $newfile = iconv( 'UTF-8', 'GB18030', $newfile ); if (file_exists($filename)){ //更改文件名成功 if (rename($filename,$newfile)){ $pic = $newname; } echo json_encode(array('info'=>$pic,'status'=>1)); }else{ //生成文件失败 echo json_encode(array('info'=>'Error'.$pic,'status'=>0)); } ?>