@@ -2,13 +2,19 @@ use std::fs;
2
2
use std:: path:: PathBuf ;
3
3
use std:: str:: FromStr ;
4
4
5
- use image:: { codecs:: png:: PngDecoder , ImageDecoder } ;
5
+ use image:: {
6
+ codecs:: { png:: PngDecoder , webp:: WebPDecoder } ,
7
+ ImageDecoder ,
8
+ } ;
6
9
7
10
extern crate glob;
8
11
extern crate image;
9
12
10
13
const XMP_PNG_PATH : & str = "tests/images/png/transparency/tp1n3p08_xmp.png" ;
11
- const EXPECTED_METADATA : & str = "<?xpacket begin='\u{feff} ' id='W5M0MpCehiHzreSzNTczkc9d'?>\n <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 13.25'>\n <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>\n \n <rdf:Description rdf:about=''\n xmlns:dc='http://purl.org/dc/elements/1.1/'>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>sunset, mountains, nature</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </rdf:Description>\n </rdf:RDF>\n </x:xmpmeta>\n <?xpacket end='r'?>" ;
14
+ const EXPECTED_PNG_METADATA : & str = "<?xpacket begin='\u{feff} ' id='W5M0MpCehiHzreSzNTczkc9d'?>\n <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 13.25'>\n <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>\n \n <rdf:Description rdf:about=''\n xmlns:dc='http://purl.org/dc/elements/1.1/'>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>sunset, mountains, nature</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </rdf:Description>\n </rdf:RDF>\n </x:xmpmeta>\n <?xpacket end='r'?>" ;
15
+
16
+ const XMP_WEBP_PATH : & str = "tests/images/webp/lossless_images/simple_xmp.webp" ;
17
+ const EXPECTED_WEBP_METADATA : & str = "<?xpacket begin='\u{feff} ' id='W5M0MpCehiHzreSzNTczkc9d'?>\n <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 13.25'>\n <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>\n \n <rdf:Description rdf:about=''\n xmlns:dc='http://purl.org/dc/elements/1.1/'>\n <dc:subject>\n <rdf:Bag>\n <rdf:li>sunset, mountains, nature</rdf:li>\n </rdf:Bag>\n </dc:subject>\n </rdf:Description>\n </rdf:RDF>\n </x:xmpmeta>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n <?xpacket end='w'?>" ;
12
18
13
19
#[ test]
14
20
fn test_read_xmp_png ( ) -> Result < ( ) , image:: ImageError > {
@@ -18,7 +24,21 @@ fn test_read_xmp_png() -> Result<(), image::ImageError> {
18
24
let mut png_decoder = PngDecoder :: new ( std:: io:: Cursor :: new ( data) ) ?;
19
25
let metadata = png_decoder. xmp_metadata ( ) ?;
20
26
assert ! ( metadata. is_some( ) ) ;
21
- assert_eq ! ( EXPECTED_METADATA . as_bytes( ) , metadata. unwrap( ) ) ;
27
+ assert_eq ! ( EXPECTED_PNG_METADATA . as_bytes( ) , metadata. unwrap( ) ) ;
28
+
29
+ Ok ( ( ) )
30
+ }
31
+
32
+ #[ test]
33
+ fn test_read_xmp_webp ( ) -> Result < ( ) , image:: ImageError > {
34
+ let img_path = PathBuf :: from_str ( XMP_WEBP_PATH ) . unwrap ( ) ;
35
+
36
+ let data = fs:: read ( img_path) ?;
37
+ let mut webp_decoder = WebPDecoder :: new ( std:: io:: Cursor :: new ( data) ) ?;
38
+ let metadata = webp_decoder. xmp_metadata ( ) ?;
39
+
40
+ assert ! ( metadata. is_some( ) ) ;
41
+ assert_eq ! ( EXPECTED_WEBP_METADATA . as_bytes( ) , metadata. unwrap( ) ) ;
22
42
23
43
Ok ( ( ) )
24
44
}
0 commit comments