Image::Size(3pm) - phpMan

Command: man perldoc info search(apropos)  


Image::Size(3pm)               User Contributed Perl Documentation               Image::Size(3pm)



NAME
       Image::Size - read the dimensions of an image in several popular formats

SYNOPSIS
           use Image::Size;
           # Get the size of globe.gif
           ($globe_x, $globe_y) = imgsize("globe.gif");
           # Assume X=60 and Y=40 for remaining examples

           use Image::Size 'html_imgsize';
           # Get the size as 'width="X" height="Y"' for HTML generation
           $size = html_imgsize("globe.gif");
           # $size == 'width="60" height="40"'

           use Image::Size 'attr_imgsize';
           # Get the size as a list passable to routines in CGI.pm
           @attrs = attr_imgsize("globe.gif");
           # @attrs == ('-width', 60, '-height', 40)

           use Image::Size;
           # Get the size of an in-memory buffer
           ($buf_x, $buf_y) = imgsize(\$buf);
           # Assuming that $buf was the data, imgsize() needed a reference to a scalar

DESCRIPTION
       The Image::Size library is based upon the "wwwis" script written by Alex Knowles
       (alex AT ed.uk), a tool to examine HTML and add 'width' and 'height' parameters to image
       tags. The sizes are cached internally based on file name, so multiple calls on the same
       file name (such as images used in bulleted lists, for example) do not result in repeated
       computations.

       Image::Size provides three interfaces for possible import:

       imgsize(stream)
           Returns a three-item list of the X and Y dimensions (width and height, in that order)
           and image type of stream. Errors are noted by undefined (undef) values for the first
           two elements, and an error string in the third.  The third element can be (and usually
           is) ignored, but is useful when sizing data whose type is unknown.

       html_imgsize(stream)
           Returns the width and height (X and Y) of stream pre-formatted as a single string
           'width="X" height="Y"' suitable for addition into generated HTML IMG tags. If the
           underlying call to "imgsize" fails, undef is returned. The format returned is dually
           suited to both HTML and XHTML.

       attr_imgsize(stream)
           Returns the width and height of stream as part of a 4-element list useful for routines
           that use hash tables for the manipulation of named parameters, such as the Tk or CGI
           libraries. A typical return value looks like "("-width", X, "-height", Y)". If the
           underlying call to "imgsize" fails, undef is returned.

       By default, only "imgsize()" is exported. Any one or combination of the three may be
       explicitly imported, or all three may be with the tag :all.

       Input Types

       The sort of data passed as stream can be one of three forms:

       string
           If an ordinary scalar (string) is passed, it is assumed to be a file name (either
           absolute or relative to the current working directory of the process) and is searched
           for and opened (if found) as the source of data.  Possible error messages (see
           DIAGNOSTICS below) may include file-access problems.

       scalar reference
           If the passed-in stream is a scalar reference, it is interpreted as pointing to an in-
           memory buffer containing the image data.

                   # Assume that &read_data gets data somewhere (WWW, etc.)
                   $img = &read_data;
                   ($x, $y, $id) = imgsize(\$img);
                   # $x and $y are dimensions, $id is the type of the image

       Open file handle
           The third option is to pass in an open filehandle (such as an object of the "IO::File"
           class, for example) that has already been associated with the target image file. The
           file pointer will necessarily move, but will be restored to its original position
           before subroutine end.

                   # $fh was passed in, is IO::File reference:
                   ($x, $y, $id) = imgsize($fh);
                   # Same as calling with filename, but more abstract.

       Recognized Formats

       Image::Size natively understands and sizes data in the following formats:

       GIF
       JPG
       XBM
       XPM
       PPM family (PPM/PGM/PBM)
       XV thumbnails
       PNG
       MNG
       TIF
       BMP
       PSD (Adobe PhotoShop)
       SWF (ShockWave/Flash)
       CWS (FlashMX, compressed SWF, Flash 6)
       PCD (Kodak PhotoCD, see notes below)

       Additionally, if the Image::Magick module is present, the file types supported by it are
       also supported by Image::Size.  See also "CAVEATS".

       When using the "imgsize" interface, there is a third, unused value returned if the pro-
       grammer wishes to save and examine it. This value is the identity of the data type,
       expressed as a 2-3 letter abbreviation as listed above. This is useful when operating on
       open file handles or in-memory data, where the type is as unknown as the size.  The two
       support routines ignore this third return value, so those wishing to use it must use the
       base "imgsize" routine.

       Note that when the Image::Magick fallback is used (for all non-natively supported files),
       the data type identity comes directly from the 'format' parameter reported by Image::Mag-
       ick, so it may not meet the 2-3 letter abbreviation format.  For example, a WBMP file
       might be reported as 'Wireless Bitmap (level 0) image' in this case.

       Information Cacheing and $NO_CACHE

       When a filename is passed to any of the sizing routines, the default behavior of the
       library is to cache the resulting information. The modification-time of the file is also
       recorded, to determine whether the cache should be purged and updated. This was originally
       added due to the fact that a number of CGI applications were using this library to gener-
       ate attributes for pages that often used the same graphical element many times over.

       However, the cacheing can lead to problems when the files are generated dynamically, at a
       rate that exceeds the resolution of the modification-time value on the filesystem. Thus,
       the optionally-importable control variable $NO_CACHE has been introduced. If this value is
       anything that evaluates to a non-false value (be that the value 1, any non-null string,
       etc.) then the cacheing is disabled until such time as the program re-enables it by set-
       ting the value to false.

       The parameter $NO_CACHE may be imported as with the imgsize routine, and is also imported
       when using the import tag ":all". If the programmer chooses not to import it, it is still
       accessible by the fully-qualified package name, $Image::Size::NO_CACHE.

       Sizing PhotoCD Images

       With version 2.95, support for the Kodak PhotoCD image format is included. However, these
       image files are not quite like the others. One file is the source of the image in any of a
       range of pre-set resolutions (all with the same aspect ratio). Supporting this here is
       tricky, since there is nothing inherent in the file to limit it to a specific resolution.

       The library addresses this by using a scale mapping, and requiring the user (you) to spec-
       ify which scale is preferred for return. Like the $NO_CACHE setting described earlier,
       this is an importable scalar variable that may be used within the application that uses
       Image::Size. This parameter is called $PCD_SCALE, and is imported by the same name. It,
       too, is also imported when using the tag ":all" or may be referenced as
       $Image::Size::PCD_SCALE.

       The parameter should be set to one of the following values:

               base/16
               base/4
               base
               base4
               base16
               base64

       Note that not all PhotoCD disks will have included the "base64" resolution. The actual
       resolutions are not listed here, as they are constant and can be found in any documenta-
       tion on the PCD format. The value of $PCD_SCALE is treated in a case-insensitive manner,
       so "base" is the same as "Base" or "BaSe". The default scale is set to "base".

       Also note that the library makes no effort to read enough of the PCD file to verify that
       the requested resolution is available. The point of this library is to read as little as
       necessary so as to operate efficiently. Thus, the only real difference to be found is in
       whether the orientation of the image is portrait or landscape. That is in fact all that
       the library extracts from the image file.

       Controlling Behavior with GIF Images

       GIF images present a sort of unusual situation when it comes to reading size.  Because
       GIFs can be a series of sub-images to be isplayed as an animated sequence, what part does
       the user want to get the size for?

       When dealing with GIF files, the user may control the behavior by setting the global value
       $Image::Size::GIF_BEHAVIOR. Like the PCD setting, this may be imported when loading the
       library. Three values are recognized by the GIF-handling code:

       0   This is the default value. When this value is chosen, the returned dimensions are
           those of the "screen". The "screen" is the display area that the GIF declares in the
           first data block of the file. No sub-images will be greater than this in size; if they
           are, the specification dictates that they be cropped to fit within the box.

           This is also the fastest method for sizing the GIF, as it reads the least amount of
           data from the image stream.

       1   If this value is set, then the size of the first sub-image within the GIF is returned.
           For plain (non-animated) GIF files, this would be the same as the screen (though it
           doesn't have to be, strictly-speaking).

           When the first image descriptor block is read, the code immediately returns, making
           this only slightly-less efficient than the previous setting.

       2   If this value is chosen, then the code loops through all the sub-images of the ani-
           mated GIF, and returns the dimensions of the largest of them.

           This option requires that the full GIF image be read, in order to ensure that the
           largest is found.

       Any value outside this range will produce an error in the GIF code before any image data
       is read.

       The value of dimensions other than the view-port ("screen") is dubious.  However, some
       users have asked for that functionality.

DIAGNOSTICS
       The base routine, "imgsize", returns undef as the first value in its list when an error
       has occured. The third element contains a descriptive error message.

       The other two routines simply return undef in the case of error.

MORE EXAMPLES
       The attr_imgsize interface is also well-suited to use with the Tk extension:

           $image = $widget->Photo(-file => $img_path, attr_imgsize($img_path));

       Since the "Tk::Image" classes use dashed option names as "CGI" does, no further transla-
       tion is needed.

       This package is also well-suited for use within an Apache web server context.  File sizes
       are cached upon read (with a check against the modified time of the file, in case of
       changes), a useful feature for a mod_perl environment in which a child process endures
       beyond the lifetime of a single request.  Other aspects of the mod_perl environment coop-
       erate nicely with this module, such as the ability to use a sub-request to fetch the full
       pathname for a file within the server space. This complements the HTML generation capabil-
       ities of the CGI module, in which "CGI::img" wants a URL but "attr_imgsize" needs a file
       path:

           # Assume $Q is an object of class CGI, $r is an Apache request object.
           # $imgpath is a URL for something like "/img/redball.gif".
           $r->print($Q->img({ -src => $imgpath,
                               attr_imgsize($r->lookup_uri($imgpath)->filename) }));

       The advantage here, besides not having to hard-code the server document root, is that
       Apache passes the sub-request through the usual request lifecycle, including any stages
       that would re-write the URL or otherwise modify it.

CAVEATS
       Caching of size data can only be done on inputs that are file names. Open file handles and
       scalar references cannot be reliably transformed into a unique key for the table of cache
       data. Buffers could be cached using the MD5 module, and perhaps in the future I will make
       that an option. I do not, however, wish to lengthen the dependancy list by another item at
       this time.

       As Image::Magick operates on file names, not handles, the use of it is restricted to cases
       where the input to "imgsize" is provided as file name.

SEE ALSO
       The Image::Magick and Image::Info Perl modules at CPAN.

AUTHORS
       Perl module interface by Randy J. Ray (rjray AT blackperl.com), original image-sizing code by
       Alex Knowles (alex AT ed.uk) and Andrew Tong (werdna AT ugcs.edu), used with their
       joint permission.

       Some bug fixes submitted by Bernd Leibing (bernd.leibing AT rz.de).  PPM/PGM/PBM siz-
       ing code contributed by Carsten Dominik (dominik AT strw.nl). Tom Metro
       (tmetro AT vl.com) re-wrote the JPG and PNG code, and also provided a PNG image for the test
       suite. Dan Klein (dvk AT lonewolf.com) contributed a re-write of the GIF code.  Cloyce
       Spradling (cloyce AT headgear.org) contributed TIFF sizing code and test images. Aldo Calpini
       (a.calpini AT romagiubileo.it) suggested support of BMP images (which I really should have
       already thought of :-) and provided code to work with. A patch to allow html_imgsize to
       produce valid output for XHTML, as well as some documentation fixes was provided by
       Charles Levert (charles AT comm.ca). The ShockWave/Flash support was provided by
       Dmitry Dorofeev (dima AT yasp.com). Though I neglected to take note of who supplied the PSD
       (PhotoShop) code, a bug was identified by Alex Weslowski <aweslowski AT rpinteractive.com>,
       who also provided a test image. PCD support was adapted from a script made available by
       Phil Greenspun, as guided to my attention by Matt Mueller mueller AT wetafx.nz. A thorough
       read of the documentation and source by Philip Newton Philip.Newton AT datenrevision.de found
       several typos and a small buglet. Ville Skytt (ville.skytta AT iki.fi) provided the MNG and
       the Image::Magick fallback code.

COPYRIGHT
       This module and the code within are copyright (c) 2007 by Randy J. Ray. Some sections may
       have copyright assigned to other authors, as indicated in the in-line documentation.

LICENSE
       Copying and distribution are permitted under the terms of the Artistic License 2.0
       (<http://www.opensource.org/licenses/artistic-license-2.0.php>) or the GNU LGPL
       (<http://www.opensource.org/licenses/lgpl-license.php>).



perl v5.8.8                                 2008-03-27                           Image::Size(3pm)

Generated by $Id: phpMan.php,v 4.49 2006/02/26 13:18:18 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2012-05-24 14:39 @38.107.179.237 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
Valid XHTML 1.0!Valid CSS!