Php узнать тип изображения

exif_imagetype

exif_imagetype() читает первые байты изображения и проверяет его подпись. Если корректная подпись найдена, возвращается константа, иначе возвращается FALSE. Возвращается то же значение, что и из getimagesize() в индексе 2, но эта функция работает намного быстрее.

exif_imagetype() может использоваться для исключения других exif-функций с неподдерживаемыми типами файлов или в сочетании с $_SERVER[‘HTTP_ACCEPT’] для проверки того, может ли зритель видеть данное конкретное изображение в своём браузере.

Если корректная подпись найдена, возвращается константа, иначе возвращается FALSE. Возвращается то же значение, что и из getimagesize() в индексе 2, но эта функция работает намного быстрее.

Определены следующие константы:
1 = IMAGETYPE_GIF
2 = IMAGETYPE_JPG
3 = IMAGETYPE_PNG
4 = IMAGETYPE_SWF
5 = IMAGETYPE_PSD
6 = IMAGETYPE_BMP
7 = IMAGETYPE_TIFF_II (intel byte order)
8 = IMAGETYPE_TIFF_MM (motorola byte order)
9 = IMAGETYPE_JPC
10 = IMAGETYPE_JP2
11 = IMAGETYPE_JPX
12 = IMAGETYPE_JB2
13 = IMAGETYPE_SWC
14 = IMAGETYPE_IFF
15 = IMAGETYPE_WBMP
16 = IMAGETYPE_XBM

Пример 1. exif_imagetype()
if (exif_imagetype('image.gif') != IMAGETYPE_GIF)

Примечание: Эта функция доступна только в PHP >= 4, скомпилированном с --enable-exif.

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

Источник

exif_imagetype

exif_imagetype() считывает начальные байты изображения и проверяет их сигнатуру.

exif_imagetype() может использоваться, чтобы избежать вызовов других exif-функций с неподдерживаемыми аргументами. Также при взаимодействии с $_SERVER[‘HTTP_ACCEPT’] можно проверять, будет ли изображение отображаться в броузере.

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

filename Изображение, тип которого требуется определить.

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

Если корректная сигнатура обнаружена, функция вернет соответствующую типу изображения константу. В противном случае функция вернет FALSE . Возвращаемое значение то же, что и во втором аргументе при возврате из функции getimagesize() , однако exif_imagetype() значительно быстрее.

Замечание:

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

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

Версия Описание
5.3.0 Добавлена поддержка иконок.

Предопределенные константы

Следующие определенные константы представляют возможные возвращаемые значения функции exif_imagetype() :

Imagetype константы
Значение Константа
1 IMAGETYPE_GIF
2 IMAGETYPE_JPEG
3 IMAGETYPE_PNG
4 IMAGETYPE_SWF
5 IMAGETYPE_PSD
6 IMAGETYPE_BMP
7 IMAGETYPE_TIFF_II (порядок байт intel)
8 IMAGETYPE_TIFF_MM (порядок байт motorola)
9 IMAGETYPE_JPC
10 IMAGETYPE_JP2
11 IMAGETYPE_JPX
12 IMAGETYPE_JB2
13 IMAGETYPE_SWC
14 IMAGETYPE_IFF
15 IMAGETYPE_WBMP
16 IMAGETYPE_XBM
17 IMAGETYPE_ICO

Примеры

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

Источник

exif_imagetype

exif_imagetype() считывает начальные байты изображения и проверяет их сигнатуру.

exif_imagetype() может использоваться, чтобы избежать вызовов других exif-функций с неподдерживаемыми аргументами. Также при взаимодействии с $_SERVER[‘HTTP_ACCEPT’] можно проверять, будет ли изображение отображаться в браузере.

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

filename Изображение, тип которого требуется определить.

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

Если корректная сигнатура обнаружена, функция вернёт соответствующую типу изображения константу. В противном случае функция вернёт false . Возвращаемое значение то же, что и во втором аргументе при возврате из функции getimagesize() , однако exif_imagetype() значительно быстрее.

Следующие определённые константы представляют возможные возвращаемые значения функции exif_imagetype() :

Константы Imagetype
Значение Константа
1 IMAGETYPE_GIF
2 IMAGETYPE_JPEG
3 IMAGETYPE_PNG
4 IMAGETYPE_SWF
5 IMAGETYPE_PSD
6 IMAGETYPE_BMP
7 IMAGETYPE_TIFF_II (порядок байт intel)
8 IMAGETYPE_TIFF_MM (порядок байт motorola)
9 IMAGETYPE_JPC
10 IMAGETYPE_JP2
11 IMAGETYPE_JPX
12 IMAGETYPE_JB2
13 IMAGETYPE_SWC
14 IMAGETYPE_IFF
15 IMAGETYPE_WBMP
16 IMAGETYPE_XBM
17 IMAGETYPE_ICO
18 IMAGETYPE_WEBP

Замечание:

В случаях, когда невозможно считать количество байтов из файла достаточное для определения типа изображения, функция exif_imagetype() вызовет предупреждение уровня E_NOTICE и вернёт false .

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

Версия Описание
7.1.0 Добавлена поддержка WebP.

Источник

Функции GD и функции для работы с изображениями

The image sharpen function (by Alex R. Austin) provided below seems to be very resource hungry and I couldn’t make it work on two different servers — trying to sharpen a 413 x 413 image I ended up with «Fatal error: Allowed memory size of 8388608 bytes exhausted» or «Internal Server Error» or the script terminated without notice. Because I had no priviliges to change the default memory limit on these servers I started looking for other sharpen functions. I have come across a php Unsharp Mask function which works like a charm on both of the servers I dealt with. It can be found at http://vikjavev.no/hovudsida/umtestside.php.

Representation decimal of a color in hexadecimal for use on functions of library GD.

// Representation hexadecimal
$var = ‘#FFFFFF’ ;

function getRgbFromGd ( $color_hex )

return array_map ( ‘hexdec’ , explode ( ‘|’ , wordwrap ( substr ( $color_hex , 1 ), 2 , ‘|’ , 1 )));

print_r ( getRgbFromGd ( $var ));

// Output: Array ( [0] => 255 [1] => 255 [2] => 255 )

If you happen to need a way to output a Windows BMP file (e.g. when using the PEAR ExcelWriter), feel free to use the following code:

function imagebmp ( $im , $fn = false )
if (! $im ) return false ;

if ( $fn === false ) $fn = ‘php://output’ ;
$f = fopen ( $fn , «w» );
if (! $f ) return false ;

//Image dimensions
$biWidth = imagesx ( $im );
$biHeight = imagesy ( $im );
$biBPLine = $biWidth * 3 ;
$biStride = ( $biBPLine + 3 ) & ~ 3 ;
$biSizeImage = $biStride * $biHeight ;
$bfOffBits = 54 ;
$bfSize = $bfOffBits + $biSizeImage ;

//BITMAPFILEHEADER
fwrite ( $f , ‘BM’ , 2 );
fwrite ( $f , pack ( ‘VvvV’ , $bfSize , 0 , 0 , $bfOffBits ));

//BITMAPINFO (BITMAPINFOHEADER)
fwrite ( $f , pack ( ‘VVVvvVVVVVV’ , 40 , $biWidth , $biHeight , 1 , 24 , 0 , $biSizeImage , 0 , 0 , 0 , 0 ));

$numpad = $biStride — $biBPLine ;
for ( $y = $biHeight — 1 ; $y >= 0 ; — $y )
for ( $x = 0 ; $x < $biWidth ; ++ $x )
$col = imagecolorat ( $im , $x , $y );
fwrite ( $f , pack ( ‘V’ , $col ), 3 );
>
for ( $i = 0 ; $i < $numpad ; ++ $i )
fwrite ( $f , pack ( ‘C’ , 0 ));
>
fclose ( $f );
return true ;
>
?>

It works the same way as regular imagejpeg/imagepng do and only supports GD2.0 true colour bitmaps (which is what’s required by ExcelWriter).

I wrote a simple function to convert an image resource to PGM (portable graymap) in order to feed it to an OCR program. It works just like the rest of the image output functions, and will convert to grayscale for you:

function imagepgm ( $image , $filename = null )
$pgm = «P5 » . imagesx ( $image ). » » . imagesy ( $image ). » 255\n» ;
for( $y = 0 ; $y < imagesy ( $image ); $y ++)
for( $x = 0 ; $x < imagesx ( $image ); $x ++)
$colors = imagecolorsforindex ( $image , imagecolorat ( $image , $x , $y ));
$pgm .= chr ( 0.3 * $colors [ «red» ] + 0.59 * $colors [ «green» ] + 0.11 * $colors [ «blue» ]);
>
>
if( $filename != null )
$fp = fopen ( $filename , «w» );
fwrite ( $fp , $pgm );
fclose ( $fp );
>
else
return $pgm ;
>
>
?>

I know this might look somewhat superfluous to others, but i once came across a situation where i needed a *strong* blur on an image without having ImageMagick installed. Executing the convolution-filter several times on the same image is awfully slow and still doesn’t give a good blur.

The function below accepts a truecolor-image and a blur-factor between 0.0 and 1.0. Beware: It’s still quite slow.

function blurImage ( $srcimg , $blur )
$blur = $blur * $blur ;
$blur = max ( 0 , min ( 1 , $blur ));

$srcw = imagesx ( $srcimg );
$srch = imagesy ( $srcimg );

$dstimg = imagecreatetruecolor ( $srcw , $srch );

$cr = 0 ; $cg = 0 ; $cb = 0 ;
$nr = 0 ; $ng = 0 ; $nb = 0 ;

$rgb = imagecolorat ( $srcimg , 0 , 0 );
$or = ( $rgb >> 16 ) & 0xFF ;
$og = ( $rgb >> 8 ) & 0xFF ;
$ob = ( $rgb ) & 0xFF ;

$nr = ( $cr * $f1a ) + ( $or * $f1b );
$ng = ( $cg * $f1a ) + ( $og * $f1b );
$nb = ( $cb * $f1a ) + ( $ob * $f1b );

$rgb = imagecolorat ( $srcimg , 0 , $y );
$or = ( $rgb >> 16 ) & 0xFF ;
$og = ( $rgb >> 8 ) & 0xFF ;
$ob = ( $rgb ) & 0xFF ;

$x = $srcw ;
while ( $x —)
//horizontal
$rgb = imagecolorat ( $srcimg , $x , $y );
$cr = ( $rgb >> 16 ) & 0xFF ;
$cg = ( $rgb >> 8 ) & 0xFF ;
$cb = ( $rgb ) & 0xFF ;

$nr = ( $cr * $f1a ) + ( $or * $f1b );
$ng = ( $cg * $f1a ) + ( $og * $f1b );
$nb = ( $cb * $f1a ) + ( $ob * $f1b );

//vertical
$rgb = imagecolorat ( $dstimg , $x , $y + 1 );
$vr = ( $rgb >> 16 ) & 0xFF ;
$vg = ( $rgb >> 8 ) & 0xFF ;
$vb = ( $rgb ) & 0xFF ;

$nr = ( $nr * $f1a ) + ( $vr * $f1b );
$ng = ( $ng * $f1a ) + ( $vg * $f1b );
$nb = ( $nb * $f1a ) + ( $vb * $f1b );

$srcimg = imagecreatefromjpeg ( «test.jpg» );
$dstimg = blurImage ( $srcimg , 0.2 );

header ( ‘Content-type: image/jpeg’ );
echo( imagejpeg ( $dstimg ) );
exit();

This is an example of get high resolution images.

/**
* Class name : resizeImage
* Created by : wang
* Description : This class is to resize the image from original size to new size
*/
class resizeImage
/**
* Function name : resize_img
* Description : This function is to resize image
* @param : $origimg variable is the original image
* @param : $newimg variable is the new image
* @param : $w variable is the width of image
* @param : $f variable is the height of image
*/
public function resize_img ( $origimg , $newimg , $w , $h ) $info = getimagesize ( $origimg );
$mime = $info [ ‘mime’ ];

// Make sure that the requested file is actually an image
if( substr ( $mime , 0 , 6 ) != ‘image/’ )
header ( ‘HTTP/1.1 400 Bad Request’ );
return ‘Error: requested file is not an accepted type: ‘ . $origimg ;
exit();
>

// Check they extention of image
$extension = image_type_to_extension ( $info [ 2 ]);
if( strtolower ( $extension ) == ‘.png’ ) $img = $this -> resize_imagepng ( $origimg , $w , $h );
imagepng ( $img , $newimg );
imagedestroy ( $img );
>elseif( strtolower ( $extension ) == ‘.jpeg’ ) $img = $this -> resize_imagejpeg ( $origimg , $w , $h );
imagejpeg ( $img , $newimg );
imagedestroy ( $img );
>elseif( strtolower ( $extension == ‘.gif’ )) $img = $this -> resize_imagegif ( $origimg , $w , $h );
imagegif ( $img , $newimg );
imagedestroy ( $img );
>

>
/**
* End function name : resize_img
*/

/**
* Function name : resize_imagepng
* Description : This function is to resize png image
* @param : $file variable is the original image
* @param : $w variable is the width of image
* @param : $f variable is the height of image
*/
private function resize_imagepng ( $file , $w , $h ) list( $width , $height ) = getimagesize ( $file );
$src = imagecreatefrompng ( $file );
$dst = imagecreatetruecolor ( $w , $h );
imagecopyresampled ( $dst , $src , 0 , 0 , 0 , 0 , $w , $h , $width , $height );
return $dst ;
>
/**
* End function name : resize_imagepng
*/

/**
* Function name : resize_imagejpeg
* Description : This function is to resize jpeg image
* @param : $file variable is the original image
* @param : $w variable is the width of image
* @param : $f variable is the height of image
*/
private function resize_imagejpeg ( $file , $w , $h ) list( $width , $height ) = getimagesize ( $file );
$src = imagecreatefromjpeg ( $file );
$dst = imagecreatetruecolor ( $w , $h );
imagecopyresampled ( $dst , $src , 0 , 0 , 0 , 0 , $w , $h , $width , $height );
return $dst ;
>
/**
* End function name : resize_imagejpeg
*/

/**
* Function name : resize_imagegif
* Description : This function is to resize gif image
* @param : $file variable is the original image
* @param : $w variable is the width of image
* @param : $f variable is the height of image
*/
private function resize_imagegif ( $file , $w , $h ) list( $width , $height ) = getimagesize ( $file );
$src = imagecreatefromgif ( $file );
$dst = imagecreatetruecolor ( $w , $h );
imagecopyresampled ( $dst , $src , 0 , 0 , 0 , 0 , $w , $h , $width , $height );
return $dst ;
>
/**
* End function name : resize_imagegif
*/
>
/**
* End class name : resizeImage
*/
?>

Источник

Читайте также:  Python json parse float
Оцените статью