exif_thumbnail

(PHP 4 >= 4.2.0, PHP 5)

exif_thumbnailПолучает встроенный эскиз TIFF или JPEG изображения

Описание

string exif_thumbnail ( string $filename [, int &$width [, int &$height [, int &$imagetype ]]] )

exif_thumbnail() считывает встроенный эскиз из TIFF или JPEG изображения.

Если вы хотите получить эскиз посредством этой функции, вам необходимо отправить mimetype-информацию, использовав header() функцию.

Иногда exif_thumbnail() не может создать изображение, но может определить его размер. В таких случах она возвращает FALSE, но задает аргументам width и height правильные значения.

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

filename

Имя файла изображения. Изображение содержит встроенный эскиз.

width

Возвращаемая ширина эскиза.

height

Возвращаемая высота эскиза.

imagetype

Возвращамый тип эскиза. Это либо TIFF, либо JPEG.

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

Возвращает встроенный эскиз или FALSE, если изображение не содержит эскиза.

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

Версия Описание
4.3.0 Стали доступны необязательные аргументы width, height и imagetype.
4.3.0 Может возвращаеть эскизы в формате TIFF.

Примеры

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

<?php
if (array_key_exists('file'$_REQUEST)) {
    
$image exif_thumbnail($_REQUEST['file'], $width$height$type);
} else {
    
$image false;
}
if (
$image!==false) {
    
header('Content-type: ' .image_type_to_mime_type($type));
    echo 
$image;
    exit;
} else {
    
// нет доступного эскиза, здесь можно обработать ошибку
    
echo 'Нет доступного эскиза';
}
?>

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

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

Коментарии

Автор:
This will allow you to manipulate the thumbnail image ($imgJpeg) using the various gd commands:

<?php
 
if (($imgJpeg exif_thumbnail($strImagePath)) === false)
    print 
"No Thumbnail!";
  else
   
$imgJpeg imageCreateFromString($imgJpeg);
?>
2004-06-13 22:05:33
http://php5.kiev.ua/manual/ru/function.exif-thumbnail.html
Great that the thumbnail can be in TIFF format (f.i. Kodak cameras have embedded thumbnail in TIFF) BUT I have not been able to show TIFF as an embedded image in HTML (using the <IMG...> tag). There seems to be no function in PHP to change TIFF to, lets say, JPG. (imagecreatefromstring gives a 'unknown datatype' error for the TIFF stream. So below sample works great for JPEG embedded thumbnail, but not for TIFF embedded (but then, maybe I did something wrong?):

test_exif.php:

<HTML>
<HEAD>
    <TITLE>Test EXIF Read  </TITLE>
</HEAD>
<BODY>
<?php
$image
='P0000614.JPG';
echo(
"<B>"$image"</B>:<BR><BR>\n");

$exif exif_read_data($image'ANY_TAG',true);
if (!
$exif===false)
{
    echo(
"Image contains headers<br><br>");
    echo(
"<A href=showthumb.php?image=" $image ."> <IMG border=0 src=showthumb.php?image=" $image ."></A><BR><BR>");

    foreach (
$exif as $key => $section
    {
        foreach (
$section as $name => $val
        {
            echo 
"$key.$name$val<br>\n";
        }
    }
}
else
{
    echo(
"Sorry, image <B>".$image "</B> does not contain (readable) EXIF data.");
}
?>
</BODY>
</HTML>

showthumb.php:

<?php
$imgdat 
exif_thumbnail($_REQUEST['image'],$width$height$type);
header('Content-type: ' image_type_to_mime_type($type));
echo(
$imgdat);
?>

When clicking on the <A> opens the TIFF image in the program that windows assigned to this type, but the JPEG opens in the browser.

I am using PHP 4.3.6 on windows iis 4 (yeah, I know.....)
2005-01-14 08:35:30
http://php5.kiev.ua/manual/ru/function.exif-thumbnail.html
Автор:
If you want to convert from TIFF to JPG you can use ImageMagick if it is installed in your server.

<?php
$exec 
'convert /path/to/file.tiff /path/to/file.jpg 2>&1';
@
exec($exec$exec_output$exec_retval);

//possible error
print_r($exec_output)
?>
2007-01-05 08:23:39
http://php5.kiev.ua/manual/ru/function.exif-thumbnail.html
Автор:
use this if you want to embed a thumbnail directly on the HTML page without writing it first to a file:

<?php
$image 
exif_thumbnail($file$width$height$type);

echo 
"<img  width='$width' height='$height' src='data:image/gif;base64,".base64_encode($image)."'>";
?>
2007-10-08 09:37:28
http://php5.kiev.ua/manual/ru/function.exif-thumbnail.html
If you've edited the image with image editing software and it no longer contains an exif thumbnail, I've created a script that will add one back into it, using the "PHP Exif Library": http://pel.sourceforge.net/index.php

<?php
require_once('../PEL/PelJpeg.php');
require_once(
'../PEL/PelIfd.php');
$fullpath 'images/DSC_0013c.JPG'# path of source image (does not contain an exif thumbnail)
     
$jpeg = new PelJpeg($fullpath);
 
$exif $jpeg->getExif();
 
$tiff $exif->getTiff();
 
$ifd0 $tiff->getIfd();        # need this so that we can later link it to the new IFD 

 
$ifd1 $ifd0->getNextIfd();
if (!
$ifd1) {        # Only create thumbnail if one doesn't exist (i.e. there is no IFD1)
   
$ifd1 = new PelIfd(1);
   
$ifd0->setNextIfd($ifd1); # point ifd0 to the new ifd1 (or else ifd1 will not be read)

   
$original ImageCreateFromString($jpeg->getBytes()); # create image resource of original
   
$orig_w=imagesx($original);
   
$orig_h=imagesy($original);
   
$wmax 160;
   
$hmax 120;

    if (
$orig_w>$wmax || $orig_h>$hmax) {
       
$thumb_w=$wmax;
       
$thumb_h=$hmax;
        if (
$thumb_w/$orig_w*$orig_h>$thumb_h)
           
$thumb_w=round($thumb_h*$orig_w/$orig_h); # maintain aspect ratio
       
else
           
$thumb_h=round($thumb_w*$orig_h/$orig_w);
    }
    else { 
# only set the thumb's size if the original is larger than 'wmax'x'hmax'
       
$thumb_w=$orig_w;
       
$thumb_h=$orig_h;
    }

       
# create image resource with thumbnail sizing
   
$thumb=imagecreatetruecolor($thumb_w,$thumb_h); 
       
## Resize original and copy to the blank thumb resource
   
imagecopyresampled($thumb,$original,
                               
0,0,0,0,$thumb_w,$thumb_h,$orig_w,$orig_h);

       
# start writing output to buffer
   
ob_start();       
       
# outputs thumb resource contents to buffer
   
ImageJpeg($thumb);   
       
# create PelDataWindow from buffer thumb contents (and end output to buffer)
   
$window = new PelDataWindow(ob_get_clean()); 

    if (
$window) {   

       
$ifd1->setThumbnail($window); # set window data as thumbnail in ifd1
       
$outpath $fullpath# overwrite original jpg file
       
file_put_contents($outpath$jpeg->getBytes()); # write everything to output filename
            # Show thumbnail in file:
       
echo '<img src="thumb_exif.php?image='.$outpath.'" border=0 alt="If you see this, it did not work"><br>';

       
    }
}
else {
    echo 
'ifd1 already exists! (IFD1 is where the thumbnail is stored)<br>';
}
?>
<?php 
# This is the code in thumb_exif.php :
       
$imgdat exif_thumbnail($_REQUEST['image'], $width$height$type);
       
header('Content-type: ' image_type_to_mime_type($type));
        echo(
$imgdat);
?>

If you have a lot of such files, you can easily make a script that searches them out and adds thumbnails to their exif.
2008-07-29 16:40:59
http://php5.kiev.ua/manual/ru/function.exif-thumbnail.html

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