home *** CD-ROM | disk | FTP | other *** search
- /*
- * $VER: AnalyzeJPEG 2.0.0 (22.7.94)
- *
- * Arexx program for the ImageFX image processing system.
- * Written by Thomas Krehbiel
- *
- * Revised for ImageFX release 2.0.
- *
- * Analyze the compression vs. quality loss of JPEG on the image
- * in the current buffer; draw a graph of the results into the
- * swap buffer.
- *
- */
-
- OPTIONS RESULTS
-
- CALL ADDLIB('rexxsupport.library',0,-30,0)
-
- startq = 25
- endq = 100
-
- GetMain
- IF result = "" THEN DO
- /* 2.0: if no main buffer, ask for one */
- LoadBuffer
- IF rc ~= 0 THEN EXIT
- GetMain
- END
- PARSE VAR result name width height depth .
-
- LockInput
- SetPrefs SaveNails Off
- prevnails = result
-
- maxbytes = 0
-
- /*
- * Collect data
- */
- DO i = startq TO endq BY 5
-
- Message 'JPEG Quality =' i
-
- SaveBufferAs JPEG 'RAM:Temp.JPG' i
-
- Swap
- LoadBuffer 'RAM:Temp.JPG' NoSmooth
- Swap
-
- Subtract
- Hook 'Variance'
- IF rc ~= 0 THEN EXIT
-
- PARSE VAR result vr.i vg.i vb.i
-
- vr.i = (vr.i + 50) % 100
- vg.i = (vg.i + 50) % 100
- vb.i = (vb.i + 50) % 100
- avg.i = (vr.i + vg.i + vb.i) % 3
-
- f = STATEF('RAM:Temp.JPG')
- bytes.i = WORD(f,2)
- IF bytes.i > maxbytes THEN maxbytes = bytes.i
-
- Undo
-
- END
-
- ADDRESS COMMAND 'Delete >NIL: RAM:Temp.JPG'
-
- /*
- * Now make a nifty-neato graph to show the data
- */
- Swap
-
- Redraw Off ; Undo Off
-
- CreateBuffer 640 400 Force
- KillBrush
-
- /*
- * Fill in block of graph
- */
- Blend 50
-
- SetPalette '-1' 255 0 0
- NewArea
- AddArea (startq-22)*8 390
- DO i = startq TO endq BY 5
- AddArea (i-22)*8 390-vr.i
- END
- AddArea (endq-22)*8 390
- FilledPoly
-
- SetPalette '-1' 0 255 0
- NewArea
- AddArea (startq-22)*8 390
- DO i = startq TO endq BY 5
- AddArea (i-22)*8 390-vg.i
- END
- AddArea (endq-22)*8 390
- FilledPoly
-
- SetPalette '-1' 0 0 255
- NewArea
- AddArea (startq-22)*8 390
- DO i = startq TO endq BY 5
- AddArea (i-22)*8 390-vb.i
- END
- AddArea (endq-22)*8 390
- FilledPoly
-
- SetPalette '-1' 96 96 96
- NewArea
- AddArea (startq-22)*8 390
- DO i = startq TO endq BY 5
- AddArea (i-22)*8 390-avg.i
- END
- AddArea (endq-22)*8 390
- FilledPoly
-
- /*
- * Line graph
- */
- Blend 100
-
- SetPalette '-1' 255 0 0
- NewArea
- DO i = startq TO endq BY 5
- AddArea (i-22)*8 390-vr.i
- END
- FreeLine
-
- SetPalette '-1' 0 255 0
- NewArea
- DO i = startq TO endq BY 5
- AddArea (i-22)*8 390-vg.i
- END
- FreeLine
-
- SetPalette '-1' 0 0 255
- NewArea
- DO i = startq TO endq BY 5
- AddArea (i-22)*8 390-vb.i
- END
- FreeLine
-
- SetPalette '-1' 192 192 192
- NewArea
- DO i = startq TO endq BY 5
- AddArea (i-22)*8 390-avg.i
- END
- FreeLine
-
-
- /*
- * Line graph of file sizes
- */
- Blend 100
-
- SetPalette '-1' 255 255 255
- NewArea
- DO i = startq TO endq BY 5
- height = 380 * bytes.i / maxbytes
- AddArea (i-22)*8 390-height
- END
- FreeLine
-
-
- /*
- * Graph Labels
- */
- Blend 100
- LockGui
-
- SetPalette '-1' 150 150 150
- DO i = startq TO endq BY 5
- Text topaz.font 8 100 i
- BrushHandle YOFFSET 0
- Point (i-22)*8 391
- END
-
- SetPalette '-1' 255 255 0
- Text topaz.font 8 100 name
- BrushHandle 0 0
- Point 10 10
-
- SetPalette '-1' 255 255 255
- Text topaz.font 8 100 'File Size'
- BrushHandle 0 0
- Point 30 20
- KillBrush
- Line 10 25 25 25
-
- SetPalette '-1' 255 0 0
- Text topaz.font 8 100 'Red Variance'
- BrushHandle 0 0
- Point 30 30
- KillBrush
- Line 10 35 25 35
-
- SetPalette '-1' 0 255 0
- Text topaz.font 8 100 'Green Variance'
- BrushHandle 0 0
- Point 30 40
- KillBrush
- Line 10 45 25 45
-
- SetPalette '-1' 0 0 255
- Text topaz.font 8 100 'Blue Variance'
- BrushHandle 0 0
- Point 30 50
- KillBrush
- Line 10 55 25 55
-
- UnlockGui
- Undo On ; Redraw On ; Redraw
-
- SetPrefs SaveNails prevnails
- UnlockInput
-
-
- EXIT
-