getimagesize

(PHP 4, PHP 5, PHP 7)

getimagesizeПолучение размера изображения

Описание

array getimagesize ( string $filename [, array &$imageinfo ] )

Функция getimagesize() определит размер заданного изображения и вернет этот размер вместе с типом файла и текстовой строкой height/width, которую можно будет использовать внутри тэга HTML IMG, а также вернет соответствующий тип содержимого HTTP.

Также getimagesize() может вернуть дополнительные сведения об изображении через аргумент imageinfo.

Замечание: Обратите внимание на тот факт, что отдельные части JPC и JP2 изображений могут иметь различную глубину цвета. В этом случае в параметре "bits" будет стоять максимальное значение из всех обнаруженных. Также JP2 файлы могут содержать несколько JPEG 2000 кодовых потоков. В таком случае getimagesize() вернет значения для первого такого потока, который будет обнаружен функцией в корне файла.

Замечание: Сведения об иконках извлекаются из иконки с наибольшим битрейтом.

Список параметров

filename

Этот аргумент определяет файл, сведения о котором будут извлекаться. Это может быть локальный или удаленный (зависит от конфигурации) файл. Передача данных удаленного файла должна осуществляться одним из поддерживаемых потоков.

imageinfo

Этот необязательный аргумент позволяет извлечь некоторые расширенные сведения из файла изображения. На данный момент можно получать различные JPG APP маркеры в виде ассоциативного массива. Некоторые программы используют эти маркеры для встраивания текста в картинку. Наиболее часто встраивают » IPTC сведения в APP13 маркер. Для преобразования двоичных данных APP13 маркера во что-то удобочитаемое можно воспользоваться функцией iptcparse().

Возвращаемые значения

Возвращает массив из 7 элементов или меньше. Не все типы изображений содержат элементы с каналами (channels) и битрейтом (bits).

Индексы 0 и 1 содержат ширину и высоту изображения.

Замечание:

Некоторые форматы файлов могут хранить несколько изображений или не содержать изображения вообще. В таких случаях getimagesize() не сможет определить размер изображения. getimagesize() вернет нули в качестве значений высоты и ширины.

Индекс 2 содержит одну из констант типа изображения IMAGETYPE_XXX constants.

Индекс 3 содержит строку со значениями ширины и высоты изображения height="yyy" width="xxx", которая может быть использована внутри IMG тэга.

mime - соответствующий MIME-тип изображения. Эти сведения используются для корректной обработки изображения на основании Content-type заголовка:

Пример #1 getimagesize() и MIME типы

<?php
$size 
getimagesize($filename);
$fp fopen($filename"rb");
if (
$size && $fp) {
    
header("Content-type: {$size['mime']}");
    
fpassthru($fp);
    exit;
} else {
    
// ошибка
}
?>

channels принимает значение 3 для RGB картинок и 4 для CMYK.

bits - глубина цвета, число бит для каждого цвета.

Для некоторых типов изображений наличие значений channels и bits может сбить с толку. Например, GIF всегда использует 3 канала на пиксель, но глубину цвета невозможно вычислить для анимированных GIF изображений с общей таблицей цветов.

В случае ошибки функция вернет FALSE.

Ошибки

Если доступ к файлу filename невозможен, getimagesize() сгенерирует ошибку уровня E_WARNING. В случае ошибки чтения файла getimagesize() сгенерирует ошибку уровня E_NOTICE.

Список изменений

Версия Описание
5.3.0 Добавлена поддержка иконок.
5.2.3 Уровень ошибок чтения, генерируемых функцией, снижен до E_NOTICE с E_WARNING.
4.3.2 Стала доступной поддержка JPC, JP2, JPX, JB2, XBM и WBMP.
4.3.2 Добавлена поддержка JPEG 2000 для аргумента imageinfo.
4.3.0 bits и channels стали доступны и для других типов.
4.3.0 Добавлена поддержка SWC and IFF.
4.2.0 Добавлена поддержка TIFF.
4.0.6 Добавлена поддержка BMP and PSD.

Примеры

Пример #2 Пример использования getimagesize()

<?php
list($width$height$type$attr) = getimagesize("img/flag.jpg");
echo 
"<img src=\"img/flag.jpg\" $attr alt=\"пример getimagesize()\" />";
?>

Пример #3 getimagesize (URL)

<?php
$size 
getimagesize("http://www.example.com/gifs/logo.gif");

// если в имени файла есть пробелы, учтите это должным образом
$size getimagesize("http://www.example.com/gifs/lo%20go.gif");

?>

Пример #4 getimagesize() возвращающая IPTC

<?php
$size 
getimagesize("testimg.jpg"$info);
if (isset(
$info["APP13"])) {
    
$iptc iptcparse($info["APP13"]);
    
var_dump($iptc);
}
?>

Примечания

Замечание:

Этой функции не требуется библиотека GD.

Смотрите также

  • image_type_to_mime_type() - Получение Mime-типа для типа изображения, возвращаемого функциями getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
  • exif_imagetype() - Определение типа изображения
  • exif_read_data() - Читает EXIF-заголовки JPEG и TIFF изображений
  • exif_thumbnail() - Получает встроенный эскиз TIFF или JPEG изображения

Коментарии

I'm sorry for they other scripts, but I made one mistake about the image resizing... here is a working script !
<?
   
// Some configuration variables !
   
$maxWidth 90;
   
$maxHeight 90;
   
$maxCols 8;
   
$webDir "https://localhost/images/";
   
$localDir $_SERVER['DOCUMENT_ROOT']."/images/";

   
$AutorisedImageType = array ("jpg""jpeg""gif""png");
?>

<center>
<table border='1' cellspacing='5' cellpadding='5' style="border-collapse:collapse; border-style: dotted">
<tr>
   <?
   
// Open localDir
   
$dh opendir($localDir);
   while (
false !== ($filename readdir($dh))) {
       
$filesArray[] = $filename;
   }

   
// Display and resize
   
foreach ($filesArray as $images) {
   
       
$ext substr($imagesstrpos($images".")+1strlen($images));
       
       if( 
in_array($ext$AutorisedImageType) ) {

           list(
$width$height$type$attr) = @getimagesize$localDir.$images );

           
$xRatio $maxWidth $width
           
$yRatio $maxHeight $height
           
            if ( (
$width <= $maxWidth) && ($height <= $maxHeight) ) { 
             
$newWidth $width
             
$newHeight $height
            } 
            else if ((
$xRatio $height) < $maxHeight) { 
             
$newHeight ceil($xRatio $height); 
             
$newWidth $maxWidth
            } 
            else { 
             
$newWidth ceil($yRatio $width); 
             
$newHeight $maxHeight
            } 
           
           if(
$i == $maxCols) {
               echo 
"</tr><tr>";
               
$i 0;
           }
           echo 
"<td align='center' valign='middle' width='$maxWidth' height='$maxHeight'><img src='".$webDir.$images."' width='$newWidth' height='$newHeight'></td>";
           
$i++;
       }
   }
?>
</tr>
</table>
</center>
2004-05-25 17:36:30
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Note that, if you're going to be a good programmer and use named constatnts (IMAGETYPE_JPEG) rather than their values (2), you want to use the IMAGETYPE variants - IMAGETYPE_JPEG, IMAGETYPE GIF, IMAGETYPE_PNG, etc.  For some reason, somebody made a horrible decision, and IMG_PNG is actually 4 in my version of PHP, while IMAGETYPE_PNG is 3.  It took me a while to figure out why comparing the type against IMG_PNG was failing...
2005-02-12 10:23:17
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Heres a easy way to scale images to the <td> that they are in
*this is broken up so anyone can understand it :)

<?
$imageinfo 
getimagesize("images/picture.jpg");
         
$ix=$imageinfo[0];
$iy=$imageinfo[1];

$widthscale $ix/175//<TD> WIDTH
$heightscale $iy/175//<TD> HEIGHT

if($widthscale 1)
$nwidth $ix*$widthscale;
else
$nwidth $ix/$widthscale;

if(
$heightscale 1)
$nheight $iy*$heightscale;
else
$nheight $iy/$heightscale;

?>
2005-03-15 23:51:54
http://php5.kiev.ua/manual/ru/function.getimagesize.html
How about this for cropping images...

<?php

$imgfile 
"img.jpg";
$cropStartX 300;
$cropStartY 250;
$cropW   200;
$cropH   200;

// Create two images
$origimg imagecreatefromjpeg($imgfile);
$cropimg imagecreatetruecolor($cropW,$cropH);

// Get the original size
list($width$height) = getimagesize($imgfile);

// Crop
imagecopyresized($cropimg$origimg00$cropStartX$cropStartY$width$height$width$height);

// TODO: write code to save new image
// or, just display it like this:
header("Content-type: image/jpeg");
imagejpeg($cropimg);

// destroy the images
imagedestroy($cropimg);
imagedestroy($origimg);

?>
2005-03-30 21:37:14
http://php5.kiev.ua/manual/ru/function.getimagesize.html
A simple piece of code i wrote to proportionally resize an image to a max height and width then display it

<?php
// Max height and width
$max_width 100;
$max_height 100;

// Path to your jpeg

$upfile '/path/to/file.jpg';
   
Header("Content-type: image/jpeg");
   
   
$size GetImageSize($upfile); // Read the size
         
$width $size[0];
         
$height $size[1];
         
         
// Proportionally resize the image to the
          // max sizes specified above
         
         
$x_ratio $max_width $width;
         
$y_ratio $max_height $height;

          if( (
$width <= $max_width) && ($height <= $max_height) )
          {
               
$tn_width $width;
               
$tn_height $height;
          }
          elseif ((
$x_ratio $height) < $max_height)
          {
               
$tn_height ceil($x_ratio $height);
               
$tn_width $max_width;
          }
          else
          {
               
$tn_width ceil($y_ratio $width);
               
$tn_height $max_height;
          }
     
// Increase memory limit to support larger files
     
     
ini_set('memory_limit''32M');
     
     
// Create the new image!
     
$src ImageCreateFromJpeg($upfile);
     
$dst ImageCreateTrueColor($tn_width$tn_height);
     
ImageCopyResized($dst$src0000$tn_width$tn_height$width$height);
     
ImageJpeg($dst);
// Destroy the images
ImageDestroy($src);
ImageDestroy($dst);
?>
2005-04-21 04:30:27
http://php5.kiev.ua/manual/ru/function.getimagesize.html
It's always good to check out an image's dimensions while attempting to upload to your server or database...especially if it's going to be displayed on a page that doesn't accomodate images beyond a particular size.

<?php

$tmpName 
$_FILES['userfile']['tmp_name'];
       
list(
$width$height$type$attr) = getimagesize($tmpName);

if(
$width>275 || $height>275)
{
die(
"exceeded image dimension limits.");
}

?>
2007-08-09 17:50:44
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Seems the various ways people are trying to proportionaly scale an image, up or down, could be more straight forward if one remembers ones algebra.

The formula is, y = mx, where m is the slope of the line. This is the ratio of y:x or m = y/x.

So if...

// max values for x and y
$y_max = 600;
$x_max = 800;

// image size
$y1 = 2000;
$x1 = 3000;

// use width for scaling
if ($x1 > $x_max)
{
    // find slope 
    $m = $y1/$x1;
    // set x side to max
    $x2 = $x_max;
    // set y side to a proportional size
    $y2 = $m * $x1;
}

The new image proportionally scaled will be x2 = 800, y2 = 533 (rounded).

To do it from the y side, simply reverse the x's and y's.
2008-01-07 06:42:00
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Correction: to find $y2 it should be...

// set y side to a proportional size
$y2 = $m * $x_max; // not $x1

Thanks Norbert =)
2008-01-10 17:35:44
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Rather than making a lengthy function that essentially runs twice (once as width, once as height) I came up with a helpful function that uses variable variables to set a maximum height/width. Hope someone finds this helpful.

function scaleimage($location, $maxw=NULL, $maxh=NULL){
    $img = @getimagesize($location);
    if($img){
        $w = $img[0];
        $h = $img[1];

        $dim = array('w','h');
        foreach($dim AS $val){
            $max = "max{$val}";
            if(${$val} > ${$max} && ${$max}){
                $alt = ($val == 'w') ? 'h' : 'w';
                $ratio = ${$alt} / ${$val};
                ${$val} = ${$max};
                ${$alt} = ${$val} * $ratio;
            }
        }

        return("<img src='{$location}' alt='image' width='{$w}' height='{$h}' />");
    }
}
2008-02-12 08:27:35
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Well, I am making a script which will resize the image when uploaded, however, i am making a multi-uploader, so i came across with a problem: an efficient way of getting a pictures height and width and storing them in an array to resize later. This is what i came up with:

<?php
$links 
= array("test1.jpg""test2.png");
$sizearray = array();
$count count($links);
for(
$i 0$i $count$i++) {
   
$size getimagesize($links[$i]);
    list(
$width$height) = $size;
   
$sizearray[$links[$i]] = array("width" => $width"height" => $height);
}
print_r($sizearray);
// which will print out: Array ( [test1.jpg] => Array ( [width] => 300 [height] => 400 ) [test2.png] => Array ( [width] => 680 [height] => 100 ) )
?>
2008-02-25 16:01:19
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Could be useful (didn´t know where to post it):

function getImageErrors( $filename, $type = "", $minWidth = 0, $minHeight = 0, $maxWidth = 0, $maxHeight = 0, $maxFileSize = 0 )
{
    $errors = array();
    if ( file_exists( $filename ) )
    {
        $ending = substr( $filename, strpos( $filename, "." ) );
        if ( is_array( $type ) )
        {
            $isTypeOf = false;
            foreach( $type as $eachtype )
            {
                if ( $ending == $eachtype )
                {
                    $isTypeOf = true;
                }
            }
            if ( ! $isTypeOf )
            {
                $errors[ 'type' ] = $ending;
            }
        }
        elseif ( $type != "" )
        {
            if ( $ending != $type )
            {
                $errors[ 'type' ] = $ending;
            }
        }
        $size = getimagesize( $filename );
        if ( $size[ 0 ] < $minWidth )
        {
            $errors[ 'minWidth' ] = $size[ 0 ];
        }
        if ( $size[ 1 ] < $minHeight )
        {
            $errors[ 'minHeight' ] = $size[ 1 ];
        }
        if ( ( $maxWidth > $minWidth ) && ( $size[ 0 ] > $maxWidth ) )
        {
            $errors[ 'maxWidth' ] = $size[ 0 ];
        }
        if ( ( $maxHeight > $minHeight ) && ( $size[ 1 ] > $maxHeight ) )
        {
            $errors[ 'maxHeight' ] = $size[ 1 ];
        }
        if ( ( $maxFileSize > 0 ) && ( filesize( $filename ) > $maxFileSize ) )
        {
            $errors[ 'maxFileSize' ] = filesize( $filename );
        }
    }
    else
    {
        $errors[ 'filename' ] = "not existing";
    }
    return ( count( $errors ) > 0 ? $errors : null );
}
2008-04-02 08:17:19
http://php5.kiev.ua/manual/ru/function.getimagesize.html
When validating images, allways check both, image type *AND* file extension!

Because most image types allow sections for comments or other irrelevant data. Those section can be used to infiltrate php code onto the server. If these files are stored as sent by the client, files with a ".php" extension can be executed and do tremendous harm.
2008-07-23 12:13:29
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Автор:
Note that if you specify a remote file (via a URL) to check the size of, PHP will first download the remote file to your server.

If you're using this function to check the size of user provided image links, this could constitute a security risk.  A malicious user could potentially link to a very large image file and cause PHP to download it.  I do not know what, if any, file size limits are in place for the download.  But suppose the user provided a link to an image that was several gigabytes in size?

It would be nice if there were a way to limit the size of the download performed by this function.  Hopefully there is already a default with some sensible limits.
2008-11-23 10:30:55
http://php5.kiev.ua/manual/ru/function.getimagesize.html
As noted below, getimagesize will download the entire image before it checks for the requested information. This is extremely slow on large images that are accessed remotely. Since the width/height is in the first few bytes of the file, there is no need to download the entire file. I wrote a function to get the size of a JPEG by streaming bytes until the proper data is found to report the width and height:

<?php
// Retrieve JPEG width and height without downloading/reading entire image.
function getjpegsize($img_loc) {
   
$handle fopen($img_loc"rb") or die("Invalid file stream.");
   
$new_block NULL;
    if(!
feof($handle)) {
       
$new_block fread($handle32);
       
$i 0;
        if(
$new_block[$i]=="\xFF" && $new_block[$i+1]=="\xD8" && $new_block[$i+2]=="\xFF" && $new_block[$i+3]=="\xE0") {
           
$i += 4;
            if(
$new_block[$i+2]=="\x4A" && $new_block[$i+3]=="\x46" && $new_block[$i+4]=="\x49" && $new_block[$i+5]=="\x46" && $new_block[$i+6]=="\x00") {
               
// Read block size and skip ahead to begin cycling through blocks in search of SOF marker
               
$block_size unpack("H*"$new_block[$i] . $new_block[$i+1]);
               
$block_size hexdec($block_size[1]);
                while(!
feof($handle)) {
                   
$i += $block_size;
                   
$new_block .= fread($handle$block_size);
                    if(
$new_block[$i]=="\xFF") {
                       
// New block detected, check for SOF marker
                       
$sof_marker = array("\xC0""\xC1""\xC2""\xC3""\xC5""\xC6""\xC7""\xC8""\xC9""\xCA""\xCB""\xCD""\xCE""\xCF");
                        if(
in_array($new_block[$i+1], $sof_marker)) {
                           
// SOF marker detected. Width and height information is contained in bytes 4-7 after this byte.
                           
$size_data $new_block[$i+2] . $new_block[$i+3] . $new_block[$i+4] . $new_block[$i+5] . $new_block[$i+6] . $new_block[$i+7] . $new_block[$i+8];
                           
$unpacked unpack("H*"$size_data);
                           
$unpacked $unpacked[1];
                           
$height hexdec($unpacked[6] . $unpacked[7] . $unpacked[8] . $unpacked[9]);
                           
$width hexdec($unpacked[10] . $unpacked[11] . $unpacked[12] . $unpacked[13]);
                            return array(
$width$height);
                        } else {
                           
// Skip block marker and read block size
                           
$i += 2;
                           
$block_size unpack("H*"$new_block[$i] . $new_block[$i+1]);
                           
$block_size hexdec($block_size[1]);
                        }
                    } else {
                        return 
FALSE;
                    }
                }
            }
        }
    }
    return 
FALSE;
}
?>
2009-02-07 22:49:39
http://php5.kiev.ua/manual/ru/function.getimagesize.html
This function returns the width and height of a JPEG image from a string, allowing the dimensions of images stored in a database to be retrieved without writing them to the disk first, or using "imagecreatefromstring" which is very slow in comparison.

<?PHP
function getJPEGImageXY($data) {
       
$soi unpack('nmagic/nmarker'$data);
        if (
$soi['magic'] != 0xFFD8) return false;
       
$marker $soi['marker'];
       
$data   substr($data4);
       
$done   false;

        while(
1) {
                if (
strlen($data) === 0) return false;
                switch(
$marker) {
                        case 
0xFFC0:
                               
$info unpack('nlength/Cprecision/nY/nX'$data);
                                return array(
$info['X'], $info['Y']);
                                break;

                        default:
                               
$info   unpack('nlength'$data);
                               
$data   substr($data$info['length']);
                               
$info   unpack('nmarker'$data);
                               
$marker $info['marker'];
                               
$data   substr($data2);
                                break;
                }
        }
}
?>

Doing this 10,000 times takes 0.43 seconds, compared with using imagecreatefromstring/imagesx/imagesy which takes around 1.52 seconds to do the same.

Do not use this instead of getimagesize when dealing with files, getimagesize is much faster coming in at 0.15 seconds.
2009-10-21 02:22:14
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Автор:
Returns a array with 4 elements.
The 0 index is the width of the image in pixels.
The 1 index is the height of the image in pixels.
The 2 index is a flag for the image type:

1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(orden de bytes intel), 8 = TIFF(orden de bytes motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM. 

The 3 index contains ' height="yyy" width="xxx" '
2011-02-13 08:20:01
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Автор:
The list of defined IMAGETYPE_ constants is on the manual page for exif_imagetype:

function.exif-imagetype
2011-04-17 18:12:00
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Автор:
Here is the function which determines whether the PNG image contains alpha or not:

<?php
function is_alpha_png($fn){
  return (
ord(@file_get_contents($fnNULLNULL251)) == 6);
}
?>

The color type of PNG image is stored at byte offset 25. Possible values of that 25'th byte is:
 * 0 - greyscale
 * 2 - RGB
 * 3 - RGB with palette
 * 4 - greyscale + alpha
 * 6 - RGB + alpha
2011-07-23 06:17:49
http://php5.kiev.ua/manual/ru/function.getimagesize.html
I wanted to use getimagesize() on .SWF files stored in the database as blob data and couldn't find a simple solution, so I created my own.

I am releasing this code under the MIT license to save everyone some time:

<?php
/*
    ----------------------------------------------------------------------
    PHP Blob Data As File Stream v1.0 (C) 2012 Alex Yam <alexyam@live.com>
    This code is released under the MIT License.
    ----------------------------------------------------------------------
    [Summary]

    A simple class for PHP functions to read and write blob data as a file
    using a stream wrapper.

    Particularly useful for running getimagesize() to get the width and
    height of .SWF Flash files that are stored in the database as blob data.

    Tested on PHP 5.3.10.

    ----------------------------------------------------------------------   
    [Usage Example]

    //Include
        include('./blob_data_as_file_stream.php');

    //Register the stream wrapper
        stream_wrapper_register("BlobDataAsFileStream", "blob_data_as_file_stream");

    //Fetch a .SWF file from the Adobe website and store it into a variable.
    //Replace this with your own fetch-swf-blob-data-from-database code.
        $swf_url = 'http://www.adobe.com/swf/software/flash/about/flashAbout_info_small.swf';
        $swf_blob_data = file_get_contents($swf_url);
   
    //Store $swf_blob_data to the data stream
        blob_data_as_file_stream::$blob_data_stream = $swf_blob_data;
   
    //Run getimagesize() on the data stream
        $swf_info = getimagesize('BlobDataAsFileStream://');
        var_dump($swf_info);

    ----------------------------------------------------------------------
    [Usage Output]

    array(5) {
      [0]=>
      int(159)
      [1]=>
      int(91)
      [2]=>
      int(13)
      [3]=>
      string(23) "width="159" height="91""
      ["mime"]=>
      string(29) "application/x-shockwave-flash"
    }

*/

class blob_data_as_file_stream {

    private static 
$blob_data_position 0;
    public static 
$blob_data_stream '';

    public static function 
stream_open($path,$mode,$options,&$opened_path){
        static::
$blob_data_position 0;
        return 
true;
    }

    public static function 
stream_seek($seek_offset,$seek_whence){
       
$blob_data_length strlen(static::$blob_data_stream);
        switch (
$seek_whence) {
            case 
SEEK_SET:
               
$new_blob_data_position $seek_offset;
                break;
            case 
SEEK_CUR:
               
$new_blob_data_position = static::$blob_data_position+$seek_offset;
                break;
            case 
SEEK_END:
               
$new_blob_data_position $blob_data_length+$seek_offset;
                break;
            default:
                return 
false;
        }
        if ((
$new_blob_data_position >= 0) AND ($new_blob_data_position <= $blob_data_length)){
            static::
$blob_data_position $new_blob_data_position;
            return 
true;
        }else{
            return 
false;
        }
    }

    public static function 
stream_tell(){
        return static::
$blob_data_position;
    }

    public static function 
stream_read($read_buffer_size){
       
$read_data substr(static::$blob_data_stream,static::$blob_data_position,$read_buffer_size);
        static::
$blob_data_position += strlen($read_data);
        return 
$read_data;
    }

    public static function 
stream_write($write_data){
       
$write_data_length=strlen($write_data);
        static::
$blob_data_stream substr(static::$blob_data_stream,0,static::$blob_data_position).
           
$write_data.substr(static::$blob_data_stream,static::$blob_data_position+=$write_data_length);
        return 
$write_data_length;
    }

    public static function 
stream_eof(){
        return static::
$blob_data_position >= strlen(static::$blob_data_stream);
    }

}
?>
2012-02-16 01:30:09
http://php5.kiev.ua/manual/ru/function.getimagesize.html
If you want to "convert" value returned by "getimagesize()" as index "2" into something more human-readable, you may consider using a function like this one:

    $imageTypeArray = array
    (
        0=>'UNKNOWN',
        1=>'GIF',
        2=>'JPEG',
        3=>'PNG',
        4=>'SWF',
        5=>'PSD',
        6=>'BMP',
        7=>'TIFF_II',
        8=>'TIFF_MM',
        9=>'JPC',
        10=>'JP2',
        11=>'JPX',
        12=>'JB2',
        13=>'SWC',
        14=>'IFF',
        15=>'WBMP',
        16=>'XBM',
        17=>'ICO',
        18=>'COUNT' 
    );
   
    $size = getimagesize($filename);
   
    $size[2] = $imageTypeArray[$size[2]];

Or something similar.
2013-09-06 12:47:13
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Автор:
i made function img_resize($path,$tmp_name,$new_name,$new_width)
this could be useful.

<?php

$new_file 
img_resize("./img/""test.jpg","copy_test.jpg",300);
echo 
"<IMG src = '$new_file'>";

function 
img_resize($path,$tmp_name,$new_name,$new_width){
    if (!
file_exists($path.$filename)){
        echo 
"file not found!";
        exit;
    }
    if (!
is_writable($path)){
        echo 
"error:permission denied!";
        exit;
    }
    list(
$width$height) = getimagesize($path $tmp_name);
   
$new_height abs($new_width $height $width); 
   
$image_p imagecreatetruecolor($new_width$new_height);
   
$image imagecreatefromjpeg($path $tmp_name); 
   
imagecopyresampled($image_p$image0000,
                       
$new_width$new_height$width$height); 
   
imagejpeg($image_p$path $new_name); 
    return 
$path.$new_name;
}

?>
2014-03-11 04:19:49
http://php5.kiev.ua/manual/ru/function.getimagesize.html
Note: getimage size doesn't attempt to validate image file formats

It is possible for malformed GIF images to contain PHP and still have valid dimensions.

Programmers need to ensure such images are validated by other tools, or never treated as PHP or other executable types (enforcing appropriate extensions, avoiding user controlled renaming, restricting uploaded images to areas of the website where PHP is not enabled).

http://ha.ckers.org/blog/20070604/passing-malicious-php-through-getimagesize/
2015-03-30 12:01:38
http://php5.kiev.ua/manual/ru/function.getimagesize.html
For some images, using getimagesize() without the second parameter will return the correct info, but when you add the second parameter it will return false. This is most likely a bug (and it has been reported as such), but meanwhile, if you encounter this problem, a workaround is to use exif_read_data().
2017-10-03 11:03:26
http://php5.kiev.ua/manual/ru/function.getimagesize.html
There's a code snippet for getting JPEG image dimensions by getting only first few bytes of the file, but it doesn't work for PNG files, so I wrote one. It will download only the first 24 bytes instead of the whole image, and thus being much faster than getimagesize() and it will save bandwidth at the same time:

<?php
// Retrieve PNG width and height without downloading/reading entire image.
function getpngsize$img_loc ) {
   
$handle fopen$img_loc"rb" ) or die( "Invalid file stream." );

    if ( ! 
feof$handle ) ) {
       
$new_block fread$handle24 );
        if ( 
$new_block[0] == "\x89" &&
           
$new_block[1] == "\x50" &&
           
$new_block[2] == "\x4E" &&
           
$new_block[3] == "\x47" &&
           
$new_block[4] == "\x0D" &&
           
$new_block[5] == "\x0A" &&
           
$new_block[6] == "\x1A" &&
           
$new_block[7] == "\x0A" ) {
                if ( 
$new_block[12] . $new_block[13] . $new_block[14] . $new_block[15] === "\x49\x48\x44\x52" ) {
                   
$width  unpack'H*'$new_block[16] . $new_block[17] . $new_block[18] . $new_block[19] );
                   
$width  hexdec$width[1] );
                   
$height unpack'H*'$new_block[20] . $new_block[21] . $new_block[22] . $new_block[23] );
                   
$height  hexdec$height[1] );

                    return array( 
$width$height );
                }
            }
        }

    return 
false;
}
?>
2017-12-12 21:24:16
http://php5.kiev.ua/manual/ru/function.getimagesize.html

    Поддержать сайт на родительском проекте КГБ