预览模式: 普通 | 列表

php 字符串与二进制字符串的转换

 

PHP代码
  1. <?php  
  2. header("Content-type:text/html;charset=utf-8");  
  3. /** 
  4. * 将字符串转换成二进制 
  5. * @param type $str 
  6. * @return type 
  7. */  
  8. function StrToBin($str){  
  9.     //1.列出每个字符  
  10.     $arr = preg_split('/(?<!^)(?!$)/u'$str);  
  11.     //2.unpack字符  
  12.     foreach($arr as &$v){  
  13.         $temp = unpack('H*'$v);   
  14.         $v = base_convert($temp[1], 16, 2);  
  15.         unset($temp);  
  16.     }  
  17.     return join(' ',$arr);  
  18.     //return $arr;  
  19. }  
  20. /** 
  21. * 讲二进制转换成字符串 
  22. * @param type $str 
  23. * @return type 
  24. */  
  25. function BinToStr($str){  
  26.     $arr = explode(' '$str);  
  27.     foreach($arr as &$v){  
  28.         $v = pack("H".strlen(base_convert($v, 2, 16)), base_convert($v, 2, 16));  
  29.     }  
  30.     return join(''$arr);  
  31. }  
  32. echo StrToBin("php二次开发:www.php2.cc");;  
  33. echo '<br/>';  
  34. echo BinToStr("1110000 1101000 1110000 111001001011101010001100 111001101010110010100001 111001011011110010000000 111001011000111110010001 111011111011110010011010 1110111 1110111 1110111 101110 1110000 1101000 1110000 110010 101110 1100011 1100011");  
  35. ?>  

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 328

PHP图片生成缩略图

 

PHP代码
  1. <?php  
  2. class CImage{  
  3. /** 
  4.  * 生成缩略图 
  5.  * @param $srcFile (string)  参数说明:源文件路径 
  6.  * @param $size int 缩略图的大小,默认值150 
  7.  * @param $is_square bool 是否正方形,默认值false 
  8.  * @param $quality int 为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。默认为 IJG 默认的质量值(大约 75)。 
  9.  */  
  10. public function create_thumbnails($srcFile$dstFile$size = 150, $is_square = false, $quality = 75){  
  11.     if(file_exists($srcFile)){  
  12.         //返回含有4个单元的数组,0-宽,1-高,2-图像类型,3-宽高的文本描述。   
  13.         $data = getimagesize($srcFile);  
  14.         //将文件载入到资源变量im中   
  15.         switch ($data[2]){  //1-GIF,2-JPG,3-PNG    
  16.             case 1:  
  17.                 $im = imagecreatefromgif($srcFile);  
  18.                 break;  
  19.             case 2:  
  20.                 $im = imagecreatefromjpeg($srcFile);  
  21.                 break;  
  22.             case 3:  
  23.                 $im = imagecreatefrompng($srcFile);  
  24.                 break;  
  25.         }  
  26.         if(!$im){  
  27.             return false;  
  28.         }  
  29.         //设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息(与单一透明色相反)  
  30.         imagesavealpha($im, true);  
  31.         //  
  32.         $srcW = imagesx($im);  
  33.         $srcH = imagesy($im);  
  34.         $srcX = $srcY = 0;  
  35.         if($is_square == true){  
  36.             if($srcH >= $srcW){  
  37.                 $srcX = 0;  
  38.                 $srcY = floor(($srcH - $srcW) / 2);  
  39.                 $srcH = $srcW;  
  40.             }else {  
  41.                 $srcY = 0;  
  42.                 $srcX = floor(($srcW - $srcH) / 2);  
  43.                 $srcW = $srcH;  
  44.             }  
  45.             $fdstH = $fdstW = $size;  
  46.         } else {  
  47.             if ($srcW < $size && $srcH < $size) {  
  48.                 return false;  
  49.             }  
  50.             if ($srcH >= $srcW) {  
  51.                 $fdstH = $size;  
  52.                 $fdstW = $fdstH * $srcW / $srcH;  
  53.             } else {  
  54.                 $fdstW = $size;  
  55.                 $fdstH = $fdstW * $srcH / $srcW;  
  56.             }  
  57.         }  
  58.         $ni = imagecreatetruecolor($fdstW$fdstH);  
  59.         //关闭 alpha 渲染并设置 alpha 标志  
  60.         imagealphablending($ni, false);  
  61.         imagesavealpha($ni, true);  
  62.         //重采样拷贝部分图像并调整大小  
  63.         imagecopyresampled($ni$im, 0, 0, $srcX$srcY$fdstW$fdstH$srcW$srcH);  
  64.         switch ($data[2]){  
  65.             case 1:  
  66.                 imagegif($ni,$dstFile);  
  67.                 break;  
  68.             case 2:  
  69.                 imagejpeg($ni,$dstFile,$quality);  
  70.                 break;  
  71.             case 3:  
  72.                 imagepng($ni,$dstFile);  
  73.                 break;  
  74.         }  
  75.         imagedestroy($im);  
  76.         imagedestroy($ni);  
  77.     }  
  78.     return false;  
  79. }  
  80.   
  81. }  
  82. //$obj = new CImage();  
  83. //$res = $obj -> create_thumbnails('./old.jpg','./new.jpg');  
  84. //if($res) echo '成功生成缩略图';  
  85. //else echo '生成缩略图失败';  

 

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 397

 一般来讲都是把图片保存到服务器下,然后根据路径读出的,但是有时候出于安全及版权什么的考虑,会把图片保存到mysql的数据库中,然后再读出来,这样的图片点击右键属性,是看不到图片地址的。下面逍遥一生就介绍下如何用php把图片存储到mysql中及如何读出。

    MySQL数据库使用专门的字段来保存大容量的数据,数据类型为BLOB。
  MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。BLOB具有四种类型,分别是TINYBLOB,BLOB, MEDIUMBLOB 与LONGBLOB,区别在于各自所能够保存的最大数据长度区别。
  在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。
  Create TABLE Images ( PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY, Image BLOB ); 
编写上传脚本 
  关于如何编写文件的上传,我们在这里就不再介绍了,感兴趣的读者可以参见“网页陶吧”内的相关文章。现在,我们主要来看一下如何接收上传文件并将其存入到MySQL数据库中。具体的脚本代码如下,其中我们假定文件上传域的名称为Picture。
PHP代码
  1. <?     
  2. If($Picture != "none") {     
  3. $PSize = filesize($Picture);     
  4. $mysqlPicture = addslashes(fread(fopen($Picture"r"), $PSize));     
  5. mysql_connect($host,$username,$password2003or die("Unable to connect to SQL server");    
  6. @mysql_select_db($dbor die("Unable to select database");     
  7. mysql_query("Insert INTO Images (Image) VALUES ($mysqlPicture)"or die("Cant Perform Query");     
  8. }else {     
  9. echo"You did not upload any picture";     
  10. }     
  11. ?>   
  
  这样,我们就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检测一下MySQL数据库所允许的最大数据包的大小。如果设置值过小的话,我们会在数据库的错误日志中找到相应的记录。
  下面,我们简单详解一下上述脚本程序。首先,我们通过“If($Picture != "none")”检测是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。
显示图片 
  在知道了如何将图? 入数据库之后,我们就需要考虑如何才能从数据库中取出图片并在HTML页面中显示出来。这个过程要稍微复杂一些,下面我们就来介绍一下编写过程。
因为PHP显示图片需要发送相应的标头,所以我们就会面临这样一个问题,那就是一次只能显示一副图片,因为我们不能在发出标头之后再发送其它的标头。
为了有效的解决这一问题,我们编写了两个文件。其中,第一个文件作为HTML页面的模板,定位图片的显示位置。第二个文件则被用来从数据库中实际输出文件流,作为<IMG>标签的SRC属性。
第一个文件的简单形式可以如下:
 
PHP代码
  1. <?     
  2. mysql_connect($host,$username,$password2003or die("Unable to connect to SQL server");    
  3. @mysql_select_db($dbor die("Unable to select database");    
  4. $result=mysql_query("Select * FROM Images"or die("Cant Perform Query");     
  5. While($row=mysql_fetch_object($result)) {    
  6. echo "<IMG SRC=\"Second.php?PicNum=$row->PicNum\">";     
  7. } ?>   
 
 
  当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的Picture ID,我们可以借此从数据库中取回对应的图片并显示。
Second.php文件如下:
 
PHP代码
  1. <?     
  2. $result=mysql_query("Select * FROM Images Where PicNum=$PicNum"or die("Cant perform Query");     
  3. $row=mysql_fetch_object($result);     
  4. Header( "Content-type: image/gif");    
  5. echo $row->Image;     
  6. ?>
 

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 425

php中的datetime和timestamp相互转化

PHP代码
  1. //1.datetime转化为timestamp  
  2.   
  3. strtotime(datetime);  
  4.   
  5. //2.timestamp 转化为datetime  
  6.   
  7. $date=date('Y-m-d H:i:s'$stamp);  

 

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 318

 广告位

↑返回顶部↑