support lzw uncompression in images.tiff
parent
745e011ccc
commit
6ffe298189
|
@ -17,8 +17,7 @@ GENERIC: load-image* ( path tuple -- image )
|
||||||
{ RGBA [ ] }
|
{ RGBA [ ] }
|
||||||
{ BGRA [
|
{ BGRA [
|
||||||
[
|
[
|
||||||
[ 4 <sliced-groups> [ [ 0 3 ] dip <slice> reverse-here ] each ]
|
4 <sliced-groups> dup [ [ 0 3 ] dip <slice> reverse-here ] each
|
||||||
[ RGBA >>component-order ] bi
|
|
||||||
] change-bitmap
|
] change-bitmap
|
||||||
] }
|
] }
|
||||||
{ RGB [
|
{ RGB [
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
USING: accessors combinators io io.encodings.binary io.files kernel
|
USING: accessors combinators io io.encodings.binary io.files kernel
|
||||||
pack endian constructors sequences arrays math.order math.parser
|
pack endian constructors sequences arrays math.order math.parser
|
||||||
prettyprint classes io.binary assocs math math.bitwise byte-arrays
|
prettyprint classes io.binary assocs math math.bitwise byte-arrays
|
||||||
grouping images ;
|
grouping images compression.lzw fry ;
|
||||||
IN: images.tiff
|
IN: images.tiff
|
||||||
|
|
||||||
TUPLE: tiff-image < image ;
|
TUPLE: tiff-image < image ;
|
||||||
|
@ -256,6 +256,20 @@ ERROR: bad-small-ifd-type n ;
|
||||||
dup ifd-entries>>
|
dup ifd-entries>>
|
||||||
[ process-ifd-entry swap ] H{ } map>assoc >>processed-tags ;
|
[ process-ifd-entry swap ] H{ } map>assoc >>processed-tags ;
|
||||||
|
|
||||||
|
ERROR: unhandled-compression compression ;
|
||||||
|
|
||||||
|
: (uncompress-strips) ( strips compression -- uncompressed-strips )
|
||||||
|
{
|
||||||
|
{ compression-none [ ] }
|
||||||
|
{ compression-lzw [ [ lzw-uncompress ] map ] }
|
||||||
|
[ unhandled-compression ]
|
||||||
|
} case ;
|
||||||
|
|
||||||
|
: uncompress-strips ( ifd -- ifd )
|
||||||
|
dup '[
|
||||||
|
_ compression find-tag (uncompress-strips)
|
||||||
|
] change-strips ;
|
||||||
|
|
||||||
: strips>bitmap ( ifd -- ifd )
|
: strips>bitmap ( ifd -- ifd )
|
||||||
dup strips>> concat >>bitmap ;
|
dup strips>> concat >>bitmap ;
|
||||||
|
|
||||||
|
@ -284,7 +298,11 @@ ERROR: unknown-component-order ifd ;
|
||||||
<parsed-tiff>
|
<parsed-tiff>
|
||||||
read-header dup endianness>> [
|
read-header dup endianness>> [
|
||||||
read-ifds
|
read-ifds
|
||||||
dup ifds>> [ process-ifd read-strips strips>bitmap drop ] each
|
dup ifds>> [
|
||||||
|
process-ifd read-strips
|
||||||
|
uncompress-strips
|
||||||
|
strips>bitmap drop
|
||||||
|
] each
|
||||||
] with-endianness
|
] with-endianness
|
||||||
] with-file-reader ;
|
] with-file-reader ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue