设为首页 收藏本站
查看: 994|回复: 0

[经验分享] php接收二进制数据流转换成图片

[复制链接]

尚未签到

发表于 2015-8-24 12:48:00 | 显示全部楼层 |阅读模式
DSC0000.gif DSC0001.gif Php代码


  1 <?php
  2 /**
  3  * 图片类
  4  * @author Haroldphp@163.com
  5  * @version 1.0
  6  *
  7  */
  8 class image {
  9     const ROOT_PATH = './';
10     const FAIL_WRITE_DATA = 'Fail to write data';
11     //没有数据流
12     const NO_STREAM_DATA = 'The post data is empty';
13     //图片类型不正确
14     const NOT_CORRECT_TYPE = 'Not a correct image type';
15     //不能创建文件
16     const CAN_NOT_CREATE_FILE = 'Can not create file';
17     //上传图片名称
18     public $image_name;
19     //图片保存名称
20     public $save_name;
21     //图片保存路径
22     public $save_dir;
23     //目录+图片完整路径
24     public $save_fullpath;
25     
26     /**
27      * 构造函数
28      * @param String $save_name 保存图片名称
29      * @param String $save_dir 保存路径名称
30      */
31     public function __construct($save_name, $save_dir) {
32         //set_error_handler ( $this->error_handler () );
33         
34         //设置保存图片名称,若未设置,则随机产生一个唯一文件名
35         $this->save_name = $save_name ? $save_name : md5 ( mt_rand (), uniqid () );
36         //设置保存图片路径,若未设置,则使用年/月/日格式进行目录存储
37         $this->save_dir =  $save_dir ? self::ROOT_PATH .$save_dir : self::ROOT_PATH .date ( 'Y/m/d' );
38         
39         //创建文件夹
40         @$this->create_dir ( $this->save_dir );
41         //设置目录+图片完整路径
42         $this->save_fullpath = $this->save_dir . '/' . $this->save_name;
43     }
44     //兼容PHP4
45     public function image($save_name) {
46         $this->__construct ( $save_name );
47     }
48     
49     public function stream2Image() {
50         //二进制数据流
51         $data = file_get_contents ( 'php://input' ) ? file_get_contents ( 'php://input' ) : gzuncompress ( $GLOBALS ['HTTP_RAW_POST_DATA'] );
52         //数据流不为空,则进行保存操作
53         if (! empty ( $data )) {
54             //创建并写入数据流,然后保存文件
55             if (@$fp = fopen ( $this->save_fullpath, 'w+' )) {
56                 fwrite ( $fp, $data );
57                 fclose ( $fp );
58                 $baseurl = "http://" . $_SERVER ["SERVER_NAME"] . ":" . $_SERVER ["SERVER_PORT"] . dirname ( $_SERVER ["SCRIPT_NAME"] ) . '/' . $this->save_name;               
59                 if ( $this->getimageInfo ( $baseurl )) {
60                     echo $baseurl;
61                 } else {
62                     echo ( self::NOT_CORRECT_TYPE  );
63                 }
64             } else {
65            
66             }
67         } else {
68             //没有接收到数据流
69             echo ( self::NO_STREAM_DATA );
70         }
71     }
72     /**
73      * 创建文件夹
74      * @param String $dirName 文件夹路径名
75      */
76     public function create_dir($dirName, $recursive = 1,$mode=0777) {
77         ! is_dir ( $dirName ) && mkdir ( $dirName,$mode,$recursive );
78     }
79     /**
80      * 获取图片信息,返回图片的宽、高、类型、大小、图片mine类型
81      * @param String $imageName 图片名称
82      */
83     public function getimageInfo($imageName = '') {
84         $imageInfo = getimagesize ( $imageName );
85         if ($imageInfo !== false) {
86             $imageType = strtolower ( substr ( image_type_to_extension ( $imageInfo [2] ), 1 ) );
87             $imageSize = filesize ( $imageInfo );
88             return $info = array ('width' => $imageInfo [0], 'height' => $imageInfo [1], 'type' => $imageType, 'size' => $imageSize, 'mine' => $imageInfo ['mine'] );
89         } else {
90             //不是合法的图片
91             return false;
92         }
93     
94     }
95     
96     /*private function error_handler($a, $b) {
97         echo $a, $b;
98     }*/
99
100 }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103505-1-1.html 上篇帖子: PHP学习:数组 下篇帖子: PHP开发调试环境配置(基于wampserver+Eclipse for PHP Developers )
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表