Home Backend Development PHP Tutorial 有没针对 fopen 打开的图片文件获取信息的函数解决方案

有没针对 fopen 打开的图片文件获取信息的函数解决方案

Jun 13, 2016 pm 01:35 PM
file fread gt nbsp this

有没针对 fopen 打开的图片文件获取信息的函数
getimagesize() 的传参是图片文件路劲
如果我只知道 tmpfile() 或 fopen() 返回的文件句柄怎么办呢
难道非要临时保存一下到硬盘上?



------解决方案--------------------
最好保存一下,如果不使用GD函数的话,那就复杂了,要自己解析图片二进制数据来得到他的原数据了。
比如这个解析png图片的。

/************************* png ****************************/

function _parsepng($file) 

//Extract info from a PNG file 
$f=fopen($file,'rb'); 
if(!$f) 
$this->Error('Can\'t open image file: '.$file); 
//Check signature 
if(fread($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) 
$this->Error('Not a PNG file: '.$file); 
//Read header chunk 
fread($f,4); 
if(fread($f,4)!='IHDR') 
$this->Error('Incorrect PNG file: '.$file); 
$w=$this->_freadint($f); 
$h=$this->_freadint($f); 
$bpc=ord(fread($f,1)); 
if($bpc>8) 
$this->Error('16-bit depth not supported: '.$file); 
$ct=ord(fread($f,1)); 
if($ct==0) 
$colspace='DeviceGray'; 
elseif($ct==2) 
$colspace='DeviceRGB'; 
elseif($ct==3) 
$colspace='Indexed'; 
else 
$this->Error('Alpha channel not supported: '.$file); 
if(ord(fread($f,1))!=0) 
$this->Error('Unknown compression method: '.$file); 
if(ord(fread($f,1))!=0) 
$this->Error('Unknown filter method: '.$file); 
if(ord(fread($f,1))!=0) 
$this->Error('Interlacing not supported: '.$file); 
fread($f,4); 
$parms='/DecodeParms >'; 
//Scan chunks looking for palette, transparency and image data 
$pal=''; 
$trns=''; 
$data=''; 
do 

$n=$this->_freadint($f); 
$type=fread($f,4); 
if($type=='PLTE') 

//Read palette 
$pal=fread($f,$n); 
fread($f,4); 

elseif($type=='tRNS') 

//Read transparency info 
$t=fread($f,$n); 
if($ct==0) 
$trns=array(ord(substr($t,1,1))); 
elseif($ct==2) 
$trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1))); 
else 

$pos=strpos($t,chr(0)); 
if($pos!==false) 
$trns=array($pos); 

fread($f,4); 

elseif($type=='IDAT') 

//Read image data block 
$data.=fread($f,$n); 
fread($f,4); 

elseif($type=='IEND') 
break; 
else 
fread($f,$n+4); 

while($n); 
if($colspace=='Indexed' && empty($pal)) 
$this->Error('Missing palette in '.$file); 
fclose($f); 
return array('w'=>$w,'h'=>$h,'cs'=>$colspace,'bpc'=>$bpc,'f'=>'FlateDecode','parms'=>$parms,'pal'=>$pal,'trns'=>$trns,'data'=>$data); 
}

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Solution: Your organization requires you to change your PIN Solution: Your organization requires you to change your PIN Oct 04, 2023 pm 05:45 PM

Solution: Your organization requires you to change your PIN

How to adjust window border settings on Windows 11: Change color and size How to adjust window border settings on Windows 11: Change color and size Sep 22, 2023 am 11:37 AM

How to adjust window border settings on Windows 11: Change color and size

How to change title bar color on Windows 11? How to change title bar color on Windows 11? Sep 14, 2023 pm 03:33 PM

How to change title bar color on Windows 11?

How to enable or disable taskbar thumbnail previews on Windows 11 How to enable or disable taskbar thumbnail previews on Windows 11 Sep 15, 2023 pm 03:57 PM

How to enable or disable taskbar thumbnail previews on Windows 11

OOBELANGUAGE Error Problems in Windows 11/10 Repair OOBELANGUAGE Error Problems in Windows 11/10 Repair Jul 16, 2023 pm 03:29 PM

OOBELANGUAGE Error Problems in Windows 11/10 Repair

What are the differences between Huawei GT3 Pro and GT4? What are the differences between Huawei GT3 Pro and GT4? Dec 29, 2023 pm 02:27 PM

What are the differences between Huawei GT3 Pro and GT4?

Display scaling guide on Windows 11 Display scaling guide on Windows 11 Sep 19, 2023 pm 06:45 PM

Display scaling guide on Windows 11

10 Ways to Adjust Brightness on Windows 11 10 Ways to Adjust Brightness on Windows 11 Dec 18, 2023 pm 02:21 PM

10 Ways to Adjust Brightness on Windows 11

See all articles