QUERY_PNG is a method of obtaining information about a PNG image file without having to read the file. See QUERY_* Routines for more information.
When an image is read by READ_PNG, it is scaled to the sBIT value, if it is provided in the file. The sBit provides the actual bit depth, which can be different from the "bit depth" byte. See www.w3.org/TR/PNG-Chunks.html for more information.
Examples
Query included in creating RGBA (16-bit/channel) and Color Indexed (8-bits/channel) image.
PRO ex_query_png
rgbdata = UINDGEN(4,320,240)
cidata = BYTSCL(DIST(256))
red = indgen(256)
green = indgen(256)
blue = indgen(256)
tempdir = GETENV('IDL_TMPDIR')
WRITE_PNG, tempdir+'rgb_image.png',rgbdata
WRITE_PNG, tempdir+'ci_image.png',cidata,red,green,blue
names = [tempdir+'rgb_image.png',$
tempdir+'ci_image.png',$
tempdir+'unknown.png']
FOR i=0,N_ELEMENTS(names)-1 DO BEGIN
ok = QUERY_PNG(names[i],s)
IF (ok) THEN BEGIN
HELP,s,/STRUCTURE
IF (s.HAS_PALETTE) THEN BEGIN
img = READ_PNG(names[i],rpal,gpal,bpal)
HELP,img,rpal,gpal,bpal
ENDIF ELSE BEGIN
img = READ_PNG(names[i])
HELP,img
ENDELSE
ENDIF ELSE BEGIN
PRINT,names[i],' is not a PNG file'
ENDELSE
ENDFOR
END
Syntax
Result = QUERY_PNG ( Filename [, Info] )
Return Value
This routine returns a long with the value of 1 (one) if the query was successful (and the file type was correct) or 0 (zero) on failure.
Arguments
Filename
A scalar string containing the pathname of the PNG file to query.
Info
Returns an anonymous structure containing information about the image in the file. The Info.TYPE field will return the value ‘PNG’.
Note: See General Query * Routine Info Structures for detailed structure information.
Keywords
None
Version History
See Also
QUERY_* Routines, READ_PNG, WRITE_PNG