@@ -85,17 +85,15 @@ impl PixelDensity {
8585 }
8686
8787 /// Converts pixel density to the representation used by jpeg-encoder crate
88- fn to_encoder_repr ( self ) -> jpeg_encoder:: Density {
89- match self . unit {
90- PixelDensityUnit :: PixelAspectRatio => jpeg_encoder:: Density :: None , // TODO: https://github.com/vstroebel/jpeg-encoder/issues/21
91- PixelDensityUnit :: Inches => jpeg_encoder:: Density :: Inch {
92- x : self . density . 0 ,
93- y : self . density . 1 ,
94- } ,
95- PixelDensityUnit :: Centimeters => jpeg_encoder:: Density :: Centimeter {
96- x : self . density . 0 ,
97- y : self . density . 1 ,
98- } ,
88+ fn to_encoder_repr ( self ) -> jpeg_encoder:: PixelDensity {
89+ let unit = match self . unit {
90+ PixelDensityUnit :: PixelAspectRatio => jpeg_encoder:: PixelDensityUnit :: PixelAspectRatio ,
91+ PixelDensityUnit :: Inches => jpeg_encoder:: PixelDensityUnit :: Inches ,
92+ PixelDensityUnit :: Centimeters => jpeg_encoder:: PixelDensityUnit :: Centimeters ,
93+ } ;
94+ jpeg_encoder:: PixelDensity {
95+ density : self . density ,
96+ unit,
9997 }
10098 }
10199}
@@ -238,11 +236,6 @@ impl<W: Write> JpegEncoder<W> {
238236 }
239237}
240238
241- // E x i f \0 \0
242- /// The header for an EXIF APP1 segment
243- const EXIF_HEADER : [ u8 ; 6 ] = [ 0x45 , 0x78 , 0x69 , 0x66 , 0x00 , 0x00 ] ;
244- const APP1 : u8 = 1 ;
245-
246239impl < W : Write > ImageEncoder for JpegEncoder < W > {
247240 #[ track_caller]
248241 fn write_image (
@@ -265,16 +258,12 @@ impl<W: Write> ImageEncoder for JpegEncoder<W> {
265258 }
266259
267260 fn set_exif_metadata ( & mut self , exif : Vec < u8 > ) -> Result < ( ) , UnsupportedError > {
268- let mut formatted = EXIF_HEADER . to_vec ( ) ;
269- formatted. extend_from_slice ( & exif) ;
270- self . encoder
271- . add_app_segment ( APP1 , & formatted)
272- . map_err ( |_| {
273- UnsupportedError :: from_format_and_kind (
274- ImageFormat :: Jpeg . into ( ) ,
275- UnsupportedErrorKind :: GenericFeature ( "Exif chunk too large" . to_string ( ) ) ,
276- )
277- } ) ?;
261+ self . encoder . add_exif_metadata ( & exif) . map_err ( |_| {
262+ UnsupportedError :: from_format_and_kind (
263+ ImageFormat :: Jpeg . into ( ) ,
264+ UnsupportedErrorKind :: GenericFeature ( "Exif chunk too large" . to_string ( ) ) ,
265+ )
266+ } ) ?;
278267 Ok ( ( ) )
279268 }
280269
0 commit comments