Maison  >  Article  >  développement back-end  >  Comment convertir un flux de données PHP en images

Comment convertir un flux de données PHP en images

藏色散人
藏色散人original
2022-10-21 09:21:122484parcourir

Comment convertir le flux de données PHP en images : 1. Créez un exemple de fichier PHP ; 2. Définissez une classe d'image via "class imageUpload {...}" ; 3. Via "public function image($save_name) {. . .}" pour créer et écrire le flux de données ; 4. Obtenez des informations sur l'image via la méthode "getimageInfo".

Comment convertir un flux de données PHP en images

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur Dell G3.

php Comment convertir un flux de données en image ?

php reçoit un flux binaire et le convertit en image

php reçoit un flux binaire et le convertit en image, la classe d'image imageUpload.php est la suivante :

<?php
/**
 * 图片类
* @author http://blog.csdn.net/haiqiao_2010
* @version 1.0
*
* PHP默认只识别application/x-www.form-urlencoded标准的数据类型。
* 因此,对型如text/xml 或者 soap 或者 application/octet-stream 之类的内容无法解析,如果用$_POST数组来接收就会失败!
* 故保留原型,交给$GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;] 来接收。 
* 另外还有一项 php://input 也可以实现此这个功能 
* php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input和 $HTTP_RAW_POST_DATA 不能用于 enctype="multipart/form-data"。
*/
class imageUpload {
    const ROOT_PATH = &#39;./&#39;;
    const FAIL_WRITE_DATA = &#39;Fail to write data&#39;;
    //没有数据流
    const NO_STREAM_DATA = &#39;The post data is empty&#39;;
    //图片类型不正确
    const NOT_CORRECT_TYPE = &#39;Not a correct image type&#39;;
    //不能创建文件
    const CAN_NOT_CREATE_FILE = &#39;Can not create file&#39;;
    //上传图片名称
    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 ( &#39;Y/m/d&#39; );         //创建文件夹
        @$this->create_dir ( $this->save_dir );
        //设置目录+图片完整路径
        $this->save_fullpath = $this->save_dir . &#39;/&#39; . $this->save_name;
    }
    //兼容PHP4
    public function image($save_name) {
        $this->__construct ( $save_name );
    }     public function stream2Image() {
        //二进制数据流
        $data = file_get_contents ( &#39;php://input&#39; ) ? file_get_contents ( &#39;php://input&#39; ) : gzuncompress ( $GLOBALS [&#39;HTTP_RAW_POST_DATA&#39;] );
        //数据流不为空,则进行保存操作
        if (! empty ( $data )) {
            //创建并写入数据流,然后保存文件
            if (@$fp = fopen ( $this->save_fullpath, &#39;w+&#39; )) {
                fwrite ( $fp, $data );
                fclose ( $fp );
                $baseurl = "http://" . $_SERVER ["SERVER_NAME"] . ":" . $_SERVER ["SERVER_PORT"] . dirname ( $_SERVER ["SCRIPT_NAME"] ) . &#39;/&#39; . $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 = &#39;&#39;) {
        $imageInfo = getimagesize ( $imageName );
        if ($imageInfo !== false) {
            $imageType = strtolower ( substr ( image_type_to_extension ( $imageInfo [2] ), 1 ) );
            $imageSize = filesize ( $imageInfo );
            return $info = array (&#39;width&#39; => $imageInfo [0], &#39;height&#39; => $imageInfo [1], &#39;type&#39; => $imageType, &#39;size&#39; => $imageSize, &#39;mine&#39; => $imageInfo [&#39;mine&#39;] );
        } else {
            //不是合法的图片
            return false;
        }     }     /*private function error_handler($a, $b) {
     echo $a, $b;
    }*/ }
?>

Apprentissage recommandé : "Tutoriel vidéo PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn