Greetings,
Does anyone know of a way to programatically read the dimensions of a jpg image in Cobol?
Preferably straight from Cobol but if you are aware of a an activex that would be ok too.
Thanks,
Steve
Greetings,
Does anyone know of a way to programatically read the dimensions of a jpg image in Cobol?
Preferably straight from Cobol but if you are aware of a an activex that would be ok too.
Thanks,
Steve
Greetings,
Does anyone know of a way to programatically read the dimensions of a jpg image in Cobol?
Preferably straight from Cobol but if you are aware of a an activex that would be ok too.
Thanks,
Steve
I figured it out.
This works:
SELECT jpgFile ASSIGN TO INPUT-OUTPUT jpg-file-name
ORGANIZATION IS BINARY SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
fd jpgFile.
01 jpgFile-REC pic x.
WORKING-STORAGE SECTION.
* Start of Frame 0 line
01 SOF0 pic xx value x"FFC0".
01 SOF0-line.
03 SOF0-Len pic xx.
03 bit-depth pic x.
03 jpg-height pic xx.
03 jpg-width pic xx.
01 test-bytes.
03 last-byte pic x.
03 cur-byte pic x.
01 hex-in-byte pic x.
01 dec-out pic 9(3).
01 dec-pos1 pic 9(3).
01 dec-pos2 pic 9(3).
01 my-hex.
03 my-hex1 pic x.
03 my-hex2 pic x.
01 ws-image-dim pic 9(5).
01 image-height pic 9(5).
01 image-width pic 9(5).
LINKAGE SECTION.
77 L-JPG-FILE-NAME PIC X(250).
77 L-IMAGE-HEIGHT PIC 9(5).
77 L-IMAGE-WIDTH PIC 9(5).
PROCEDURE DIVISION USING L-JPG-FILE-NAME, L-IMAGE-HEIGHT,
L-IMAGE-WIDTH.
1-MAIN-LOGIC.
move L-JPG-FILE-NAME to jpg-file-name.
perform READ-IMAGE-FILE
move image-height to L-IMAGE-HEIGHT.
move image-width to L-IMAGE-WIDTH.
exit program.
stop run.
READ-IMAGE-FILE.
OPEN INPUT jpgFile.
MOVE "N" TO EOF.
move x"01" to last-byte
perform until eof = "Y"
READ jpgFile AT END MOVE "Y" TO EOF
end-read
IF EOF = "N"
move jpgFile-REC to cur-byte
if test-bytes = SOF0
perform PROCESS-SOF0-LINE
move "Y" to eof
else
move cur-byte to last-byte
end-if
end-if
end-perform.
close jpgFile.
PROCESS-SOF0-LINE.
* read the next 7 bytes into the SOF0-line to get the height and width.
move 1 to sub
perform 7 times
READ jpgFile AT END MOVE "Y" TO EOF
end-read
IF EOF = "N"
move jpgFile-REC to SOF0-line(sub:1)
end-if
add 1 to sub
end-perform
move jpg-height to my-hex.
perform CALC-DIM.
move ws-image-dim to image-height.
move jpg-width to my-hex.
perform CALC-DIM.
move ws-image-dim to image-width.
CALC-DIM.
move my-hex1 to hex-in-byte
perform hex2dec.
move dec-out to dec-pos1
move my-hex2 to hex-in-byte
perform hex2dec.
move dec-out to dec-pos2
multiply dec-pos1 by 256 giving ws-image-dim
add dec-pos2 to ws-image-dim giving ws-image-dim.
HEX2DEC.
EVALUATE hex-in-byte
WHEN X"00" MOVE 000 TO dec-out
WHEN X"01" MOVE 001 TO dec-out
WHEN X"02" MOVE 002 TO dec-out
WHEN X"03" MOVE 003 TO dec-out
WHEN X"04" MOVE 004 TO dec-out
etc, etc through x"FF"
Greetings,
Does anyone know of a way to programatically read the dimensions of a jpg image in Cobol?
Preferably straight from Cobol but if you are aware of a an activex that would be ok too.
Thanks,
Steve
haha, thanks for posting the solution here, it helps me solve the image dimension issue.![]()
____________________________________________________
tags: image programming image width & height
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.