home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _b95c54caa21a8bd10ad106bc5bf21565 < prev    next >
Text File  |  2000-03-23  |  9KB  |  217 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>Image::Size - read the dimensions of an image in several popular formats</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> Image::Size - read the dimensions of an image in several popular formats</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <UL>
  26.  
  27.         <LI><A HREF="#input types">Input Types</A></LI>
  28.         <LI><A HREF="#recognizd formats">Recognizd Formats</A></LI>
  29.     </UL>
  30.  
  31.     <LI><A HREF="#diagnostics">DIAGNOSTICS</A></LI>
  32.     <LI><A HREF="#caveats">CAVEATS</A></LI>
  33.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  34.     <LI><A HREF="#authors">AUTHORS</A></LI>
  35. </UL>
  36. <!-- INDEX END -->
  37.  
  38. <HR>
  39. <P>
  40. <H1><A NAME="name">NAME</A></H1>
  41. <P>Image::Size - read the dimensions of an image in several popular formats</P>
  42. <P>
  43. <HR>
  44. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  45. <UL>
  46. <LI>Linux</LI>
  47. <LI>Solaris</LI>
  48. <LI>Windows</LI>
  49. </UL>
  50. <HR>
  51. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  52. <PRE>
  53.     use Image::Size;
  54.     # Get the size of globe.gif
  55.     ($globe_x, $globe_y) = imgsize("globe.gif");
  56.     # Assume X=60 and Y=40 for remaining examples</PRE>
  57. <PRE>
  58.     use Image::Size 'html_imgsize';
  59.     # Get the size as "HEIGHT=X WIDTH=Y" for HTML generation
  60.     $size = html_imgsize("globe.gif");
  61.     # $size == "HEIGHT=40 WIDTH=60"</PRE>
  62. <PRE>
  63.     use Image::Size 'attr_imgsize';
  64.     # Get the size as a list passable to routines in CGI.pm
  65.     @attrs = attr_imgsize("globe.gif");
  66.     # @attrs == ('-HEIGHT', 40, '-WIDTH', 60)</PRE>
  67. <PRE>
  68.     use Image::Size;
  69.     # Get the size of an in-memory buffer
  70.     ($buf_x, $buf_y) = imgsize($buf);</PRE>
  71. <P>
  72. <HR>
  73. <H1><A NAME="description">DESCRIPTION</A></H1>
  74. <P>The <STRONG>Image::Size</STRONG> library is based upon the <CODE>wwwis</CODE> script written by
  75. Alex Knowles <EM>(<A HREF="mailto:alex@ed.ac.uk">alex@ed.ac.uk</A>)</EM>, a tool to examine HTML and add HEIGHT and
  76. WIDTH parameters to image tags. The sizes are cached internally based on
  77. file name, so multiple calls on the same file name (such as images used
  78. in bulleted lists, for example) do not result in repeated computations.</P>
  79. <P><STRONG>Image::Size</STRONG> provides three interfaces for possible import:</P>
  80. <DL>
  81. <DT><STRONG><A NAME="item_imgsize">imgsize(<EM>stream</EM>)</A></STRONG><BR>
  82. <DD>
  83. Returns a three-item list of the X and Y dimensions (width and height, in
  84. that order) and image type of <EM>stream</EM>. Errors are noted by undefined
  85. (<STRONG>undef</STRONG>) values for the first two elements, and an error string in the third.
  86. The third element can be (and usually is) ignored, but is useful when
  87. sizing data whose type is unknown.
  88. <P></P>
  89. <DT><STRONG><A NAME="item_html_imgsize">html_imgsize(<EM>stream</EM>)</A></STRONG><BR>
  90. <DD>
  91. Returns the width and height (X and Y) of <EM>stream</EM> pre-formatted as a single
  92. string <CODE>"HEIGHT=X WIDTH=Y"</CODE> suitable for addition into generated HTML IMG
  93. tags. If the underlying call to <A HREF="#item_imgsize"><CODE>imgsize</CODE></A> fails, <STRONG>undef</STRONG> is returned.
  94. <P></P>
  95. <DT><STRONG><A NAME="item_attr_imgsize">attr_imgsize(<EM>stream</EM>)</A></STRONG><BR>
  96. <DD>
  97. Returns the width and height of <EM>stream</EM> as part of a 4-element list useful
  98. for routines that use hash tables for the manipulation of named parameters,
  99. such as the Tk or CGI libraries. A typical return value looks like
  100. <CODE>("-HEIGHT", Y, "-WIDTH", X)</CODE>. If the underlying call to <A HREF="#item_imgsize"><CODE>imgsize</CODE></A> fails,
  101. <STRONG>undef</STRONG> is returned.
  102. <P></P></DL>
  103. <P>By default, only <A HREF="#item_imgsize"><CODE>imgsize()</CODE></A> is imported. Any one or
  104. combination of the three may be imported, or all three may be with the
  105. tag <STRONG>:all</STRONG>.</P>
  106. <P>
  107. <H2><A NAME="input types">Input Types</A></H2>
  108. <P>The sort of data passed as <EM>stream</EM> can be one of three forms:</P>
  109. <DL>
  110. <DT><STRONG><A NAME="item_string">string</A></STRONG><BR>
  111. <DD>
  112. If an ordinary scalar (string) is passed, it is assumed to be a file name
  113. (either absolute or relative to the current working directory of the
  114. process) and is searched for and opened (if found) as the source of data.
  115. Possible error messages (see DIAGNOSTICS below) may include file-access
  116. problems.
  117. <P></P>
  118. <DT><STRONG><A NAME="item_scalar_reference">scalar reference</A></STRONG><BR>
  119. <DD>
  120. If the passed-in stream is a scalar reference, it is interpreted as pointing
  121. to an in-memory buffer containing the image data.
  122. <PRE>
  123.         # Assume that &read_data gets data somewhere (WWW, etc.)
  124.         $img = &read_data;
  125.         ($x, $y, $id) = imgsize(\$img);
  126.         # $x and $y are dimensions, $id is the type of the image</PRE>
  127. <P></P>
  128. <DT><STRONG><A NAME="item_Open_file_handle">Open file handle</A></STRONG><BR>
  129. <DD>
  130. The third option is to pass in an open filehandle (such as an object of
  131. the <CODE>IO::File</CODE> class, for example) that has already been associated with
  132. the target image file. The file pointer will necessarily move, but will be
  133. restored to its original position before subroutine end.
  134. <PRE>
  135.         # $fh was passed in, is IO::File reference:
  136.         ($x, $y, $id) = imgsize($fh);
  137.         # Same as calling with filename, but more abstract.</PRE>
  138. <P></P></DL>
  139. <P>
  140. <H2><A NAME="recognizd formats">Recognizd Formats</A></H2>
  141. <P>Image::Size understands and sizes data in the following formats:</P>
  142. <DL>
  143. <DT><DD>
  144. GIF
  145. <P></P>
  146. <DT><DD>
  147. JPG
  148. <P></P>
  149. <DT><DD>
  150. XBM
  151. <P></P>
  152. <DT><DD>
  153. XPM
  154. <P></P>
  155. <DT><DD>
  156. PPM family (PPM/PGM/PBM)
  157. <P></P>
  158. <DT><DD>
  159. PNG
  160. <P></P>
  161. <DT><DD>
  162. TIF
  163. <P></P>
  164. <DT><DD>
  165. BMP
  166. <P></P></DL>
  167. <P>When using the <A HREF="#item_imgsize"><CODE>imgsize</CODE></A> interface, there is a third, unused value returned
  168. if the programmer wishes to save and examine it. This value is the three-
  169. letter identity of the data type. This is useful when operating on open
  170. file handles or in-memory data, where the type is as unknown as the size.
  171. The two support routines ignore this third return value, so those wishing to
  172. use it must use the base <A HREF="#item_imgsize"><CODE>imgsize</CODE></A> routine.</P>
  173. <P>
  174. <HR>
  175. <H1><A NAME="diagnostics">DIAGNOSTICS</A></H1>
  176. <P>The base routine, <A HREF="#item_imgsize"><CODE>imgsize</CODE></A>, returns <STRONG>undef</STRONG> as the first value in its list
  177. when an error has occured. The third element contains a descriptive
  178. error message.</P>
  179. <P>The other two routines simply return <STRONG>undef</STRONG> in the case of error.</P>
  180. <P>
  181. <HR>
  182. <H1><A NAME="caveats">CAVEATS</A></H1>
  183. <P>Caching of size data can only be done on inputs that are file names. Open
  184. file handles and scalar references cannot be reliably transformed into a
  185. unique key for the table of cache data. Buffers could be cached using the
  186. MD5 module, and perhaps in the future I will make that an option. I do not,
  187. however, wish to lengthen the dependancy list by another item at this time.</P>
  188. <P>
  189. <HR>
  190. <H1><A NAME="see also">SEE ALSO</A></H1>
  191. <P><CODE>http://www.tardis.ed.ac.uk/~ark/wwwis/</CODE> for a description of <CODE>wwwis</CODE>
  192. and how to obtain it.</P>
  193. <P>
  194. <HR>
  195. <H1><A NAME="authors">AUTHORS</A></H1>
  196. <P>Perl module interface by Randy J. Ray <EM>(<A HREF="mailto:rjray@uswest.com">rjray@uswest.com</A>)</EM>, original
  197. image-sizing code by Alex Knowles <EM>(<A HREF="mailto:alex@ed.ac.uk">alex@ed.ac.uk</A>)</EM> and Andrew Tong
  198. <EM>(<A HREF="mailto:werdna@ugcs.caltech.edu">werdna@ugcs.caltech.edu</A>)</EM>, used with their joint permission.</P>
  199. <P>Some bug fixes submitted by Bernd Leibing <EM>(<A HREF="mailto:bernd.leibing@rz.uni-ulm.de">bernd.leibing@rz.uni-ulm.de</A>)</EM>.
  200. PPM/PGM/PBM sizing code contributed by Carsten Dominik
  201. <EM>(<A HREF="mailto:dominik@strw.LeidenUniv.nl">dominik@strw.LeidenUniv.nl</A>)</EM>. Tom Metro <EM>(<A HREF="mailto:tmetro@vl.com">tmetro@vl.com</A>)</EM> re-wrote the JPG
  202. and PNG code, and also provided a PNG image for the test suite. Dan Klein
  203. <EM>(<A HREF="mailto:dvk@lonewolf.com">dvk@lonewolf.com</A>)</EM> contributed a re-write of the GIF code.  Cloyce Spradling
  204. <EM>(<A HREF="mailto:cloyce@headgear.org">cloyce@headgear.org</A>)</EM> contributed TIFF sizing code and test images. Aldo
  205. Calpini <EM>(<A HREF="mailto:a.calpini@romagiubileo.it">a.calpini@romagiubileo.it</A>)</EM> suggested support of BMP images (which
  206. I <EM>really</EM> should have already thought of :-) and provided code to work
  207. with.</P>
  208. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  209. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  210. <STRONG><P CLASS=block> Image::Size - read the dimensions of an image in several popular formats</P></STRONG>
  211. </TD></TR>
  212. </TABLE>
  213.  
  214. </BODY>
  215.  
  216. </HTML>
  217.