php5.4以下模拟getimagesizefromstring
html5上传图片时可用php://input的数据流来运作.
如果要得到图片信息,那只有getimagesize($filename),再打一次刚关闭的文件.
php里有一个getimagesizefromstring,但是要>=php5.4,但目前还没服务器还没用上这么高版本的php.
作为一个效率癖,这是不被允许的,有直接操纵数据流的方法吗?
当然, stream_register_wrapper — 注册一个用 PHP 类实现的 URL 封装协议
php代码
class getImgStream{ private $imgStream; private $position; function stream_open($path, $mode, $options, &$opened_path){ $url = parse_url($path); $this->imgStream = $GLOBALS[$url["host"]]; $this->position = 0; return true; } function stream_read($count){ $ret = substr($this->imgStream, $this->position, $count); $this->position += strlen($ret); return $ret; } function stream_stat(){ //maxmemory: 5 * 1024 * 1024; $fp = fopen("php://temp/maxmemory:5242880", 'r+'); fwrite($fp, $this->imgStream); $fstat = fstat($fp); fclose($fp); return $fstat; } function stream_eof(){ return $this->position >= strlen($this->imgStream); } function stream_tell(){ return $this->position; } function stream_seek($offset, $whence){ $l = strlen($this->imgStream); $p = &$this->position; switch($whence){ case SEEK_SET: $newPos = $offset; break; case SEEK_CUR: $newPos = $p + $offset; break; case SEEK_END: $newPos = $l + $offset; break; default: return false; } $ret = ($newPos >= 0 && $newPos <= $l); if($ret) $p = $newPos; return $ret; } function stream_close(){ unset($this->imgStream, $this->position); } } $file_path = 'http://www.baidu.com/img/shouye_b5486898c692066bd2cbaeda86d74448.gif'; $stream = file_get_contents($file_path); stream_wrapper_register("image", "getImgStream"); print_r(getimagesize('image://stream')); $new_img = imagecreatefromgif('image://stream'); //或者 $new_img = imagecreatefromstring($stream); print_r($new_img); imagejpeg($new_img, 'E:\WEB\uploads\test.jpg', 100);
Copier après la connexion
方法二
$file_path = 'http://www.baidu.com/img/shouye_b5486898c692066bd2cbaeda86d74448.gif'; $stream = file_get_contents($file_path); print_r(getimagesize("data://text/plain;base64," . base64_encode($stream))); $new_img = imagecreatefromgif("data://text/plain;base64," . base64_encode($stream)); //或者 $new_img = imagecreatefromstring($stream); print_r($new_img); imagejpeg($new_img, 'E:\WEB\uploads\test.jpg', 100);
Copier après la connexion
Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines
By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines
By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines
By DDD
R.E.P.O. Enregistrer l'emplacement du fichier: où est-il et comment le protéger?
3 Il y a quelques semaines
By DDD

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)
