<?php
/**
* 图片类
* @author Haroldphp@163.com
* @version 1.0
*
*/
class image {
const ROOT_PATH = './';
const FAIL_WRITE_DATA = 'Fail to write data';
//没有数据流
const NO_STREAM_DATA = 'The post data is empty';
//图片类型不正确
const NOT_CORRECT_TYPE = 'Not a correct image type';
//不能创建文件
const CAN_NOT_CREATE_FILE = 'Can not create file';
//上传图片名称
public $image_name;
//图片保存名称
public $save_name;
//图片保存路径
public $save_dir;
//目录+图片完整路径
public $save_fullpath;
/**
* 构造函数
* @param String $save_name 保存图片名称
* @param String $save_dir 保存路径名称
*/
public function __construct($save_name, $save_dir) {
//set_error_handler ( $this->error_handler () );
//设置保存图片名称,若未设置,则随机产生一个唯一文件名
$this->save_name = $save_name ? $save_name : md5 ( mt_rand (), uniqid () );
//设置保存图片路径,若未设置,则使用年/月/日格式进行目录存储
$this->save_dir = $save_dir ? self::ROOT_PATH .$save_dir : self::ROOT_PATH .date ( 'Y/m/d' );
//创建文件夹
@$this->create_dir ( $this->save_dir );
//设置目录+图片完整路径
$this->save_fullpath = $this->save_dir . '/' . $this->save_name;
}
//兼容PHP4
public function image($save_name) {
$this->__construct ( $save_name );
}
public function stream2Image() {
//二进制数据流
$data = file_get_contents ( 'php://input' ) ? file_get_contents ( 'php://input' ) : gzuncompress ( $GLOBALS ['HTTP_RAW_POST_DATA'] );
//数据流不为空,则进行保存操作
if (! empty ( $data )) {
//创建并写入数据流,然后保存文件
if (@$fp = fopen ( $this->save_fullpath, 'w+' )) {
fwrite ( $fp, $data );
fclose ( $fp );
$baseurl = "http://" . $_SERVER ["SERVER_NAME"] . ":" . $_SERVER ["SERVER_PORT"] . dirname ( $_SERVER ["SCRIPT_NAME"] ) . '/' . $this->save_name;
if ( $this->getimageInfo ( $baseurl )) {
echo $baseurl;
} else {
echo ( self::NOT_CORRECT_TYPE );
}
} else {
}
} else {
//没有接收到数据流
echo ( self::NO_STREAM_DATA );
}
}
/**
* 创建文件夹
* @param String $dirName 文件夹路径名
*/
public function create_dir($dirName, $recursive = 1,$mode=0777) {
! is_dir ( $dirName ) && mkdir ( $dirName,$mode,$recursive );
}
/**
* 获取图片信息,返回图片的宽、高、类型、大小、图片mine类型
* @param String $imageName 图片名称
*/
public function getimageInfo($imageName = '') {
$imageInfo = getimagesize ( $imageName );
if ($imageInfo !== false) {
$imageType = strtolower ( substr ( image_type_to_extension ( $imageInfo [2] ), 1 ) );
$imageSize = filesize ( $imageInfo );
return $info = array ('width' => $imageInfo [0], 'height' => $imageInfo [1], 'type' => $imageType, 'size' => $imageSize, 'mine' => $imageInfo ['mine'] );
} else {
//不是合法的图片
return false;
}
}
/*private function error_handler($a, $b) {
echo $a, $b;
}*/
}
分享到:
相关推荐
本文将深入探讨如何实现从数据库中的二进制流转换为图片,并将其保存到本地文件系统。 首先,我们需要了解二进制流的基本概念。在计算机科学中,所有数据最终都会被转化为二进制形式,即由0和1组成的序列。图片文件...
labview实现16进制数据流转换为jpg图片的vi
本文实例讲述了PHP实现接收二进制流转换成图片的方法。分享给大家供大家参考,具体如下: 这里实现php 接收二进制流转换成图片,所使用的图片类imageUpload.php如下: <?php /** * 图片类 * @version 1.0 * * PHP...
#### 二、二进制流转回图片 接下来,我们来看看如何将二进制流还原为图片。 ```csharp public static Image GetImageByByte(byte[] bytes) { Image photo = null; using (MemoryStream ms = new MemoryStream...
### 二进制数据转换成图片 在计算机科学领域,数据的存储与处理往往涉及到不同格式之间的转换。本文主要探讨如何将二进制数据转换为图片格式,这对于图像处理、数据库存储以及网络传输等场景具有重要意义。 #### ...
在标题提到的场景中,“16进制文本数据转换成JPG图片”是一个实用的技术,它允许我们将从单片机摄像头采集的原始十六进制数据转化为人类可识别的图像格式,如JPEG(JPG)。这种转换方法对于调试、分析或存储从低级别...
二进制图像数据互转工具,串口接收图片数据转图片文件很好的工具
### 小程序生成二维码并且把二进制流转换图片 #### 背景与目标 在小程序开发过程中,为了方便用户分享或者记录某些特定的信息,经常需要生成二维码。此外,生成的二维码通常需要以图片的形式展示给用户。本文将...
本知识点主要探讨如何使用PHP作为后端语言来接收来自这两种平台的二进制图片数据,并处理上传请求。首先,理解二进制数据的概念至关重要,二进制数据是计算机系统中最基本的数据形式,它由0和1组成,可以表示任何...
PHP接受图片二进制数据并保存。不是图片图片上传
在上面的代码中,我们首先使用MemoryStream将二进制数组转换成流,然后使用Image.FromStream将流转换成图片,并将其显示在PictureBox控件中。 三、图片保存到数据库中 在C#中,可以使用ADO.NET将图片保存到数据库...
JAVA二进制流转PDF 1 http接口接收到二进制流,如下,转换成Pdf文件保存到本地 %PDF-1.4 %���� 3 0 obj ...
而Base64是一种用于将二进制数据转换为可打印ASCII字符的编码方法,它将每3个字节的二进制数据转换为4个Base64字符,这样可以在文本格式中安全地传输和存储非文本数据,如图片。 在Java编程语言中,我们可以使用...
写入图片的过程与读取相反,首先将图片数据转换成二进制流,然后写入到文件中。在Python中,可以这样操作: ```python # 假设binary_data是之前读取的二进制数据 with open('output.jpg', 'wb') as f: f.write...
标题"图片二进制转换器"指的是一个工具或程序,它的功能是将图像文件转换成适合单片机使用的二进制数据。 首先,我们需要理解图片的基本构成。图片是由像素组成的,每个像素代表图像中的一个颜色点,通常由红、绿、...
这种编码方式主要适用于编码那些无法直接通过文本格式传输的数据,比如图片、音频、视频等二进制文件。Base64编码通过把每3个字节的二进制数据转换为4个字符来实现编码过程,每个字符代表着6个比特的信息,因此编码...
在发送和接收数据时,可能需要将字节数据与16进制字符串之间进行转换。 3. **数据包处理**:在UDPServer的OnUDPRead事件中,我们可以接收到客户端发送的数据。这些数据通常是以字节数组形式存在的,我们需要解析这...
本文将深入探讨如何通过二进制流转换为文件来实现文件下载,并着重讲解如何解决中文文件名出现的乱码问题。 ### 文件下载原理 在Web应用中,文件下载通常涉及客户端(浏览器)与服务器端之间的数据传输。当用户...