@@ -13,15 +13,13 @@ use std::io::{self, Cursor, Read, Write, Seek};
13
13
use std:: marker:: PhantomData ;
14
14
use std:: mem;
15
15
16
- use byteorder:: { NativeEndian , ByteOrder } ;
17
-
18
16
use crate :: color:: { ColorType , ExtendedColorType } ;
19
17
use crate :: error:: {
20
18
DecodingError , EncodingError , ImageError , ImageResult , LimitError , LimitErrorKind ,
21
19
ParameterError , ParameterErrorKind , UnsupportedError , UnsupportedErrorKind ,
22
20
} ;
23
21
use crate :: image:: { ImageDecoder , ImageEncoder , ImageFormat } ;
24
- use crate :: utils:: vec_u16_into_u8 ;
22
+ use crate :: utils;
25
23
26
24
/// Decoder for TIFF images.
27
25
pub struct TiffDecoder < R >
@@ -78,7 +76,7 @@ impl ImageError {
78
76
fn from_tiff_decode ( err : tiff:: TiffError ) -> ImageError {
79
77
match err {
80
78
tiff:: TiffError :: IoError ( err) => ImageError :: IoError ( err) ,
81
- err @ tiff:: TiffError :: FormatError ( _) => {
79
+ err @ tiff:: TiffError :: FormatError ( _) | err @ tiff :: TiffError :: IntSizeError => {
82
80
ImageError :: Decoding ( DecodingError :: new ( ImageFormat :: Tiff . into ( ) , err) )
83
81
}
84
82
tiff:: TiffError :: UnsupportedError ( desc) => {
@@ -96,7 +94,7 @@ impl ImageError {
96
94
fn from_tiff_encode ( err : tiff:: TiffError ) -> ImageError {
97
95
match err {
98
96
tiff:: TiffError :: IoError ( err) => ImageError :: IoError ( err) ,
99
- err @ tiff:: TiffError :: FormatError ( _) => {
97
+ err @ tiff:: TiffError :: FormatError ( _) | err @ tiff :: TiffError :: IntSizeError => {
100
98
ImageError :: Encoding ( EncodingError :: new ( ImageFormat :: Tiff . into ( ) , err) )
101
99
}
102
100
tiff:: TiffError :: UnsupportedError ( desc) => {
@@ -146,7 +144,9 @@ impl<'a, R: 'a + Read + Seek> ImageDecoder<'a> for TiffDecoder<R> {
146
144
. map_err ( ImageError :: from_tiff_decode) ?
147
145
{
148
146
tiff:: decoder:: DecodingResult :: U8 ( v) => v,
149
- tiff:: decoder:: DecodingResult :: U16 ( v) => vec_u16_into_u8 ( v) ,
147
+ tiff:: decoder:: DecodingResult :: U16 ( v) => utils:: vec_u16_into_u8 ( v) ,
148
+ tiff:: decoder:: DecodingResult :: U32 ( v) => utils:: vec_u32_into_u8 ( v) ,
149
+ tiff:: decoder:: DecodingResult :: U64 ( v) => utils:: vec_u64_into_u8 ( v) ,
150
150
} ;
151
151
152
152
Ok ( TiffReader ( Cursor :: new ( buf) , PhantomData ) )
@@ -163,7 +163,13 @@ impl<'a, R: 'a + Read + Seek> ImageDecoder<'a> for TiffDecoder<R> {
163
163
buf. copy_from_slice ( & v) ;
164
164
}
165
165
tiff:: decoder:: DecodingResult :: U16 ( v) => {
166
- NativeEndian :: write_u16_into ( & v, buf) ;
166
+ buf. copy_from_slice ( bytemuck:: cast_slice ( & v) ) ;
167
+ }
168
+ tiff:: decoder:: DecodingResult :: U32 ( v) => {
169
+ buf. copy_from_slice ( bytemuck:: cast_slice ( & v) ) ;
170
+ }
171
+ tiff:: decoder:: DecodingResult :: U64 ( v) => {
172
+ buf. copy_from_slice ( bytemuck:: cast_slice ( & v) ) ;
167
173
}
168
174
}
169
175
Ok ( ( ) )
0 commit comments