home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Resource Library: Graphics
/
graphics-16000.iso
/
amiga
/
viewers
/
btrthnjp
/
compress.rex
next >
Wrap
OS/2 REXX Batch file
|
1991-12-08
|
7KB
|
197 lines
/************************/
/** REXX:COMPRESS.REXX **/
/************************/
/* BY RICK TILLERY */
/************************/
/* ------------------------------------ */
/* | THIS SCRIPT RUNS WITH ADPRO 2.0. | */
/* ------------------------------------ */
/* Through some experimentation with ADPro, LZ and GIF compression, I've */
/* COME UP WITH THIS SCRIPT. JPEG IMAGE COMPRESSION IS VERY NICE FOR */
/* come up with this script for the compression of 24 bit images. JPEG */
/* image compression is VERY nice for rather complicated images, (such */
/* as complex ray-traces, digitized pics, and scans) where it's losses */
/* are not readily apparent. But for the majority of ray-traced and */
/* hand-drawn pictures, a passable JPEG compressed file is almost as */
/* large as (or larger in a very few cases) the original IFF 24 file. */
/* (NOTE: DCTV and HAM-E users will not notice the degradation until a */
/* much lower Q rating is used. Toaster, FireCracker24, Rembrant, */
/* Harlequin, IV24, and other full 24 bit board owners will be very */
/* thankful if you distribute the original 24 bit data, and let their */
/* particular device degrade it as it must.) */
/* When I separated out the red, green and blue components of some 24 */
/* bit pics and then created three separate GIF files from them, I */
/* noticed that the resulting GIF files were extremely small. Earlier, */
/* I had purported that taking the raw sculpt files (red, green and */
/* blue) and compressing them with LZ (or LHArc) was the best non-lossy */
/* method of transferring 24 bit pics. This was indeed smaller than the */
/* IFF 24 files compressed or not. This GIF method usually results in */
/* files at least half as large as that! So, until I can author my own */
/* IFF LZW format (along with suitable encode/decode programs), I offer */
/* this script and its companion for lossless 24 bit image compression. */
/* Give it a try, and see what you think. */
/* Instructions: 1. Move input file(s) to a HD partition with at least */
/* WIDTH x HEIGHT x 3 x 2 free bytes (i.e. 768 x 480 */
/* x 3 x 2 = 2,211,840 bytes) */
/* 2. Run ADPro 2.0 */
/* 3. Run this script */
/* 4. Use ADPro requester to give name of input file */
/* 5. WAIT - this script with produce an archive of the */
/* three GIF files that you can upload */
/* Portal: RTillery (RTillery@cup.portal.com) */
/* Open port to ADPro - it must be running first */
ADDRESS "ADPro"
/* Turn on results flag to get data FROM ADPro... */
/* ...and set loader/saver formats */
OPTIONS RESULTS
LFORMAT "UNIVERSAL"
SFORMAT "SCULPT"
/* Ask user for input file */
LOAD '"' || '"'
/* Get name of input file from ADPro for script manipulation */
LAST_LOADED_IMAGE
FILE = ADPRO_RESULT
/* First of the three Sculpt format raw files */
OUTFILE = FILE||'.red'
/* Save the raw image info in three separate red, green and blue files */
SAVE OUTFILE RAW
/* THE FOLLOWING CODE IS FOR COMPARISON OF LZH COMPRESSION OF THE RAW */
/* SCULPT FILES TO THEIR GIF EQUIVALENTS. TO DO THIS COMPARISON, */
/* DELETE THE COMMENT SYMBOLS (/* */) HERE AND AT THE END OF THIS */
/* SCRIPT. */
/*
ADPRO_TO_BACK
/* Access DOS */
ADDRESS "COMMAND"
/* Clear CLI script was called from */
'ECHO' '"*E[0;0H*E[J"'
/* Archive three raw image files */
'LZ' A FILE||'.SCULPT.LZH' FILE||'.#?'
/* NOTE: Don't forget that the raw files have no image size info, so if */
/* for some reason you want to send the above archive somewhere, */
/* you must add a file letting the recipient know what the */
/* image's dimensions are. */
ADDRESS "ADPro"
ADPRO_TO_FRONT
*/
/* Get Width of loaded image from ADPro */
XSIZE
WIDTH = ADPRO_RESULT
/* Get Height of loaded image from ADPro */
YSIZE
HEIGHT = ADPRO_RESULT
/* Create blank image same size as input image */
LFORMAT "BACKDROP"
LOAD "dummy" WIDTH HEIGHT GRAY
/* And save it */
SAVE FILE||'.GRAY1' RAW
/* Get ready to read in raw files */
LFORMAT 'SCULPT'
/* Access to DOS */
ADDRESS "COMMAND"
/* We need two copies of that blank image because ADPro requires there */
/* be three separate files for the Sculpt loader from AREXX */
'COPY' FILE||'.GRAY1' FILE||'.GRAY2'
/* Replace Green file with blank file */
'RENAME' FILE||'.GRN' FILE||'.GOLD'
'RENAME' FILE||.'GRAY1' FILE||.'GRN'
/* Replace Blue file with blank file */
'RENAME' FILE||'.BLU' FILE||'.BOLD'
'RENAME' FILE||'.GRAY2' FILE||'.BLU'
ADDRESS "ADPro"
/* Get raw data but since Green and Blue are blank, it's only Red data */
LOAD OUTFILE WIDTH HEIGHT COLOR
/* Create 256 color rendition for GIF image */
RENDER_TYPE '256'
EXECUTE
/* Save GIF file */
SFORMAT 'GIF'
SAVE FILE||.'RED.GIF' IMAGE
/***********************************************************************/
/* From here on out, we do the same thing as above with the Green and */
/* Blue data */
/***********************************************************************/
ADDRESS "COMMAND"
'RENAME' FILE||'.RED' FILE||'.ROLD'
'RENAME' FILE||'.GRN' FILE||'.RED'
'RENAME' FILE||'.GOLD' FILE||'.GRN'
ADDRESS "ADPro"
LOAD OUTFILE WIDTH HEIGHT COLOR
RENDER_TYPE '256'
EXECUTE
SAVE FILE||.'GREEN.GIF' IMAGE
ADDRESS "COMMAND"
'RENAME' FILE||'.GRN' FILE||'.GOLD'
'RENAME' FILE||'.BLU' FILE||'.GRN'
'RENAME' FILE||'.BOLD' FILE||'.BLU'
ADDRESS "ADPro"
LOAD OUTFILE WIDTH HEIGHT COLOR
RENDER_TYPE '256'
EXECUTE
SAVE FILE||.'BLUE.GIF' IMAGE
ADPRO_TO_BACK
ADDRESS "COMMAND"
/* Get rid of superfluous raw files */
'DELETE' '>NIL:' FILE||'.(RED|GRN|BLU|ROLD|GOLD)'
/* Put three GIF files into archive WITHOUT trying to compress */
'LZ' '-z' A FILE||'.LZH' FILE||'#?GIF'
/* Now get rid of GIF files */
'DELETE' '>NIL:' FILE||'*GIF'
/* THE FOLLOWING COMMAND GOES WITH THE ABOVE CODE FOR LZH TO GIF COMPARE */
/*
LIST FILE||'#?'
*/