#1199 Test suite changes and associate fixes to the code.
This commit is contained in:
parent
b3c6de6274
commit
d369aa67d5
12
Makefile
12
Makefile
@ -87,16 +87,20 @@ teste testx testv:
|
||||
cd test && $(MAKE) $@
|
||||
|
||||
# convenience for running individual tests
|
||||
bugfixes-test.sh crw-test.sh curliotest.sh eps-preview-test.sh eps-test.sh exifdata-test.sh \
|
||||
exiv2-test.sh httpiotest.sh imagetest.sh iotest.sh iptctest.sh modify-test.sh \
|
||||
path-test.sh preview-test.sh sshiotest.sh stringto-test.sh tiff-test.sh video-test.sh \
|
||||
write-test.sh write-video-test.sh write2-test.sh xmpparser-test.sh :
|
||||
bugfixes-test.sh crw-test.sh curliotest.sh eps-preview-test.sh eps-test.sh exifdata-test.sh \
|
||||
exiv2-test.sh httpiotest.sh imagetest.sh iotest.sh iptctest.sh modify-test.sh \
|
||||
path-test.sh preview-test.sh sshiotest.sh stringto-test.sh tiff-test.sh video-test.sh \
|
||||
write-test.sh write-video-test.sh write2-test.sh xmpparser-test.sh webp-test.sh:
|
||||
cd test && ./$@
|
||||
|
||||
# convenience target for running bugfixes-test.sh
|
||||
bugtest bugstest testbugs bugfixes:
|
||||
cd test && ./bugfixes-test.sh
|
||||
|
||||
# convenience target for running webp-test.sh
|
||||
webp-test webptest:
|
||||
cd test && ./webp-test.sh
|
||||
|
||||
# convenience target for building individual sample programs
|
||||
addmoddel exifcomment exifvalue httptest iptctest mmap-test stringto-test \
|
||||
exifdata iotest key-test path-test taglist write2-test write-test \
|
||||
|
||||
@ -87,16 +87,20 @@ teste testx testv:
|
||||
cd test && $(MAKE) $@
|
||||
|
||||
# convenience for running individual tests
|
||||
bugfixes-test.sh crw-test.sh curliotest.sh eps-preview-test.sh eps-test.sh exifdata-test.sh \
|
||||
exiv2-test.sh httpiotest.sh imagetest.sh iotest.sh iptctest.sh modify-test.sh \
|
||||
path-test.sh preview-test.sh sshiotest.sh stringto-test.sh tiff-test.sh video-test.sh \
|
||||
write-test.sh write-video-test.sh write2-test.sh xmpparser-test.sh :
|
||||
bugfixes-test.sh crw-test.sh curliotest.sh eps-preview-test.sh eps-test.sh exifdata-test.sh \
|
||||
exiv2-test.sh httpiotest.sh imagetest.sh iotest.sh iptctest.sh modify-test.sh \
|
||||
path-test.sh preview-test.sh sshiotest.sh stringto-test.sh tiff-test.sh video-test.sh \
|
||||
write-test.sh write-video-test.sh write2-test.sh xmpparser-test.sh webp-test.sh:
|
||||
cd test && ./$@
|
||||
|
||||
# convenience target for running bugfixes-test.sh
|
||||
bugtest bugstest testbugs bugfixes:
|
||||
cd test && ./bugfixes-test.sh
|
||||
|
||||
# convenience target for running webp-test.sh
|
||||
webp-test webptest:
|
||||
cd test && ./webp-test.sh
|
||||
|
||||
# convenience target for building individual sample programs
|
||||
addmoddel exifcomment exifvalue httptest iptctest mmap-test stringto-test \
|
||||
exifdata iotest key-test path-test taglist write2-test write-test \
|
||||
|
||||
@ -1258,12 +1258,18 @@ namespace Action {
|
||||
|| Params::instance().target_ & Params::ctXmpRaw)) {
|
||||
std::string suffix = Params::instance().suffix_;
|
||||
if (suffix.empty()) suffix = ".exv";
|
||||
if (Params::instance().target_ & Params::ctXmpSidecar) suffix = ".xmp";
|
||||
if ((Params::instance().target_ & Params::ctXmpSidecar)
|
||||
|| (Params::instance().target_ & Params::ctXmpRaw )) suffix = ".xmp";
|
||||
|
||||
std::string exvPath = newFilePath(path, suffix);
|
||||
rc = metacopy(exvPath, path, Exiv2::ImageType::none, true);
|
||||
std::string xmpPath = newFilePath(path, suffix);
|
||||
rc = suffix == ".exv" ? metacopy(exvPath, path, Exiv2::ImageType::xmp, true)
|
||||
: insertXmpPacket(xmpPath,path)
|
||||
;
|
||||
}
|
||||
if (0 == rc && Params::instance().target_ & Params::ctXmpSidecar) {
|
||||
rc = insertXmpPacket(path);
|
||||
std::string xmpPath = newFilePath(path,".xmp");
|
||||
rc = insertXmpPacket(xmpPath,path);
|
||||
}
|
||||
if (0 == rc && Params::instance().target_ & Params::ctIccProfile) {
|
||||
rc = insertIccProfile(path);
|
||||
@ -1280,9 +1286,8 @@ namespace Action {
|
||||
return 1;
|
||||
} // Insert::run
|
||||
|
||||
int Insert::insertXmpPacket(const std::string& path) const
|
||||
int Insert::insertXmpPacket(const std::string& xmpPath,const std::string& path) const
|
||||
{
|
||||
std::string xmpPath = newFilePath(path, ".xmp");
|
||||
if (!Exiv2::fileExists(xmpPath, true)) {
|
||||
std::cerr << xmpPath
|
||||
<< ": " << _("Failed to open the file\n");
|
||||
@ -1295,7 +1300,9 @@ namespace Action {
|
||||
}
|
||||
Exiv2::DataBuf buf = Exiv2::readFile(xmpPath);
|
||||
std::string xmpPacket;
|
||||
xmpPacket.assign(reinterpret_cast<char*>(buf.pData_), buf.size_);
|
||||
for ( long i = 0 ; i < buf.size_ ; i++ ) {
|
||||
xmpPacket += (char) buf.pData_[i];
|
||||
}
|
||||
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path);
|
||||
assert(image.get() != 0);
|
||||
image->readMetadata();
|
||||
@ -1307,25 +1314,37 @@ namespace Action {
|
||||
|
||||
int Insert::insertIccProfile(const std::string& path) const
|
||||
{
|
||||
int rc = 0;
|
||||
// for path "foo.XXX", do a binary copy of "foo.icc"
|
||||
std::string iccProfilePath = newFilePath(path, ".icc");
|
||||
if (!Exiv2::fileExists(iccProfilePath, true)) {
|
||||
std::cerr << iccProfilePath
|
||||
<< ": " << _("Failed to open the file\n");
|
||||
return -1;
|
||||
}
|
||||
if (!Exiv2::fileExists(path, true)) {
|
||||
std::cerr << path
|
||||
<< ": " << _("Failed to open the file\n");
|
||||
return -1;
|
||||
std::cerr << iccProfilePath
|
||||
<< ": " << _("Failed to open the file\n");
|
||||
rc = -1;
|
||||
}
|
||||
Exiv2::DataBuf iccProfileBlob = Exiv2::readFile(iccProfilePath);
|
||||
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path);
|
||||
assert(image.get() != 0);
|
||||
image->readMetadata();
|
||||
image->setIccProfile(iccProfileBlob);
|
||||
image->writeMetadata();
|
||||
|
||||
return 0;
|
||||
// test path exists
|
||||
if (rc==0 && !Exiv2::fileExists(path, true)) {
|
||||
std::cerr << path
|
||||
<< ": " << _("Failed to open the file\n");
|
||||
rc=-1;
|
||||
}
|
||||
|
||||
// read in the metadata
|
||||
if ( rc == 0 ) {
|
||||
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path);
|
||||
assert(image.get() != 0);
|
||||
image->readMetadata();
|
||||
// clear existing profile, assign the blob and rewrite image
|
||||
image->clearIccProfile();
|
||||
if ( iccProfileBlob.size_ ) {
|
||||
image->setIccProfile(iccProfileBlob);
|
||||
}
|
||||
image->writeMetadata();
|
||||
}
|
||||
|
||||
return rc;
|
||||
} // Insert::insertIccProfile
|
||||
|
||||
int Insert::insertThumbnail(const std::string& path) const
|
||||
|
||||
@ -350,7 +350,7 @@ namespace Action {
|
||||
The filename of the XMP packet is expected to be the image
|
||||
filename (\em path) minus its suffix plus ".xmp".
|
||||
*/
|
||||
int insertXmpPacket(const std::string& path) const;
|
||||
int insertXmpPacket(const std::string& xmpPath,const std::string& path) const;
|
||||
/*!
|
||||
@brief Insert an ICC profile from a file into file \em path.
|
||||
The filename of the ICC profile is expected to be the image
|
||||
|
||||
@ -137,7 +137,6 @@ namespace Exiv2 {
|
||||
int height = 0;
|
||||
|
||||
byte size_buff[4];
|
||||
std::string xmpData;
|
||||
Blob blob;
|
||||
|
||||
if (exifData_.count() > 0) {
|
||||
@ -147,15 +146,12 @@ namespace Exiv2 {
|
||||
}
|
||||
}
|
||||
|
||||
if (xmpData_.count() > 0) {
|
||||
if (xmpData_.count() > 0 && !writeXmpFromPacket()) {
|
||||
XmpParser::encode(xmpPacket_, xmpData_,
|
||||
XmpParser::useCompactFormat |
|
||||
XmpParser::omitAllFormatting);
|
||||
if (xmpPacket_.size() > 0) {
|
||||
has_xmp = true;
|
||||
xmpData = xmpPacket_.data();
|
||||
}
|
||||
}
|
||||
has_xmp = xmpPacket_.size() > 0;
|
||||
|
||||
/* Verify for a VP8X Chunk First before writing in
|
||||
case we have any exif or xmp data, also check
|
||||
@ -389,9 +385,9 @@ namespace Exiv2 {
|
||||
if (has_xmp) {
|
||||
std::string header = "XMP ";
|
||||
if (outIo.write((const byte*)header.data(), TAG_SIZE) != TAG_SIZE) throw Error(21);
|
||||
ul2Data(data, (uint32_t) xmpData.size(), littleEndian);
|
||||
ul2Data(data, (uint32_t) xmpPacket().size(), littleEndian);
|
||||
if (outIo.write(data, 4) != 4) throw Error(21);
|
||||
if (outIo.write((const byte*)xmpData.data(), static_cast<long>(xmpData.size())) != (long)xmpData.size()) {
|
||||
if (outIo.write((const byte*)xmpPacket().data(), static_cast<long>(xmpPacket().size())) != (long)xmpPacket().size()) {
|
||||
throw Error(21);
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,13 +74,14 @@ TESTS = addmoddel.sh \
|
||||
preview-test.sh \
|
||||
stringto-test.sh \
|
||||
tiff-test.sh \
|
||||
webp-test.sh \
|
||||
write-test.sh \
|
||||
write2-test.sh \
|
||||
xmpparser-test.sh \
|
||||
conversions.sh
|
||||
|
||||
# video tests
|
||||
TESTV = video-test.sh
|
||||
TESTV = video-test.sh
|
||||
TESTVW = write-video-test.sh
|
||||
|
||||
# EPS tests
|
||||
@ -149,7 +150,7 @@ testx:
|
||||
done
|
||||
|
||||
mostlyclean clean:
|
||||
rm -rf $(top_srcdir)/test/tmp/*
|
||||
rm -rf $(top_srcdir)/test/tmp/*
|
||||
|
||||
distclean: clean
|
||||
$(RM) *~ *.bak *#
|
||||
|
||||
@ -548,54 +548,6 @@ source ./functions.source
|
||||
runTest exiv2 -pa --grep fuji/i $filename
|
||||
done
|
||||
|
||||
num=1199 # WebPImage
|
||||
printf "$num " >&3
|
||||
filename=exiv2-bug$num.webp # http://dev.exiv2.org/attachments/download/1033/Stonehenge-with-icc.webp
|
||||
icc_name=exiv2-bug$num.icc
|
||||
exv_name=exiv2-bug$num.exv
|
||||
copyTestFile $filename
|
||||
runTest exiv2 -pS $filename
|
||||
runTest exiv2 -pR $filename
|
||||
runTest exiv2 -pX $filename | xmllint --pretty 2 -
|
||||
# test deleting metadata
|
||||
for option in -dC -de -dx -dCe -dCx -dCxe; do
|
||||
copyTestFile $filename
|
||||
runTest exiv2 -pS $filename
|
||||
runTest exiv2 $option $filename
|
||||
runTest exiv2 -pS $filename
|
||||
done
|
||||
# test print/insert metadata
|
||||
if [ 1 == 1 ]; then
|
||||
# ICC Profile
|
||||
copyTestFile $filename
|
||||
copyTestFile Reagan.tiff
|
||||
exiv2 -pS $filename
|
||||
exiv2 -pC Reagan.tiff > $icc_name
|
||||
exiv2 -iC $filename
|
||||
exiv2 -pS $filename
|
||||
fi
|
||||
|
||||
if [ 1 == 0 ]; then # TODO: Fix this
|
||||
# XMP
|
||||
copyTestFile $filename
|
||||
copyTestFile Reagan.tiff
|
||||
exiv2 -pS $filename
|
||||
exiv2 --force -ex Reagan.tiff
|
||||
mv Reagan.exv $exv_name
|
||||
exiv2 -ix $filename
|
||||
exiv2 -pS $filename
|
||||
fi
|
||||
|
||||
if [ 1 == 0 ]; then # TODO: Fix this
|
||||
# EXIF
|
||||
copyTestFile exiv2-bug937.jpg $filename
|
||||
exiv2 --force -ea $filename
|
||||
copyTestFile $filename
|
||||
exiv2 -pS $filename
|
||||
exiv2 -ie $filename
|
||||
exiv2 -pS $filename
|
||||
fi
|
||||
|
||||
num=1202
|
||||
printf "$num " >&3
|
||||
filename=exiv2-bug$num.jpg # test/tmp/20030925_201850.jpg
|
||||
|
||||
Binary file not shown.
291
test/data/webp-test.out
Normal file
291
test/data/webp-test.out
Normal file
@ -0,0 +1,291 @@
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 187526 | 0 | WEBP
|
||||
VP8X | 10 | 12 | ,........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172614 | II*........................... .
|
||||
XMP | 2864 | 184662 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 187526 | 0 | WEBP
|
||||
VP8X | 10 | 12 | ,........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172614 | II*........................... .
|
||||
STRUCTURE OF TIFF FILE (II): MemIo
|
||||
address | tag | type | count | offset | value
|
||||
10 | 0x0100 ImageWidth | LONG | 1 | 1200 | 1200
|
||||
22 | 0x0101 ImageLength | LONG | 1 | 800 | 800
|
||||
34 | 0x0102 BitsPerSample | SHORT | 3 | 194 | 8 8 8
|
||||
46 | 0x010e ImageDescription | ASCII | 37 | 200 | ...
|
||||
58 | 0x010f Make | ASCII | 18 | 238 | NIKON CORPORATION
|
||||
70 | 0x0110 Model | ASCII | 12 | 256 | NIKON D5300
|
||||
82 | 0x0112 Orientation | SHORT | 1 | 1 | 1
|
||||
94 | 0x011a XResolution | RATIONAL | 1 | 268 | 268/0
|
||||
106 | 0x011b YResolution | RATIONAL | 1 | 276 | 276/0
|
||||
118 | 0x0128 ResolutionUnit | SHORT | 1 | 2 | 2
|
||||
130 | 0x0131 Software | ASCII | 11 | 284 | GIMP 2.9.5
|
||||
142 | 0x0132 DateTime | ASCII | 20 | 296 | 2016:08:13 10:54:16
|
||||
154 | 0x0213 YCbCrPositioning | SHORT | 1 | 1 | 1
|
||||
166 | 0x8769 ExifTag | LONG | 1 | 316 | 316
|
||||
STRUCTURE OF TIFF FILE (II): MemIo
|
||||
address | tag | type | count | offset | value
|
||||
318 | 0x829a ExposureTime | RATIONAL | 1 | 814 | 814/0
|
||||
330 | 0x829d FNumber | RATIONAL | 1 | 822 | 822/0
|
||||
342 | 0x8822 ExposureProgram | SHORT | 1 | 0 | 0
|
||||
354 | 0x8827 ISOSpeedRatings | SHORT | 1 | 200 | 200
|
||||
366 | 0x8830 SensitivityType | SHORT | 1 | 2 | 2
|
||||
378 | 0x9000 ExifVersion | UNDEFINED | 4 | 808661552 | 0230
|
||||
390 | 0x9003 DateTimeOriginal | ASCII | 20 | 830 | 2015:07:16 15:38:54
|
||||
402 | 0x9004 DateTimeDigitized | ASCII | 20 | 850 | 2015:07:16 15:38:54
|
||||
414 | 0x9101 ComponentsConfiguration | UNDEFINED | 4 | 197121 | ...
|
||||
426 | 0x9102 CompressedBitsPerPixel | RATIONAL | 1 | 870 | 870/0
|
||||
438 | 0x9204 ExposureBiasValue | SRATIONAL | 1 | 878 | 878/0
|
||||
450 | 0x9205 MaxApertureValue | RATIONAL | 1 | 886 | 886/0
|
||||
462 | 0x9207 MeteringMode | SHORT | 1 | 5 | 5
|
||||
474 | 0x9208 LightSource | SHORT | 1 | 0 | 0
|
||||
486 | 0x9209 Flash | SHORT | 1 | 16 | 16
|
||||
498 | 0x920a FocalLength | RATIONAL | 1 | 894 | 894/0
|
||||
510 | 0x927c MakerNote | UNDEFINED | 3826 | 902 | Nikon.....II*.....9.+...$...... ...
|
||||
STRUCTURE OF TIFF FILE (II): MemIo
|
||||
address | tag | type | count | offset | value
|
||||
10 | 0x002b | ASCII | 36 | 698 | 48 49 48 48 0 0 2 0 0 0 0 0 0 0 ...
|
||||
22 | 0x002c | ASCII | 1157 | 734 | 48 49 48 49 35 0 128 2 170 1 0 0 ...
|
||||
34 | 0x002d | ASCII | 8 | 1892 | 512 0 0
|
||||
46 | 0x0032 | ASCII | 20 | 1900 | 48 49 48 48 1 0 0 0
|
||||
58 | 0x0035 | ASCII | 16 | 1920 | 48 50 48 48 0 0
|
||||
70 | 0x003b | ASCII | 32 | 1936 | 256/256 256/256 256/256 256/256
|
||||
82 | 0x003c | ASCII | 2 | 49 | 1
|
||||
94 | 0x009d | ASCII | 2 | 48 | 0
|
||||
106 | 0x00a3 | BYTE | 1 | 0 |
|
||||
118 | 0x00b6 | ASCII | 16 | 1968 | 0 0 0 0 0 0 0 0
|
||||
130 | 0x00bb | ASCII | 26 | 1984 | 48 50 48 48 255 255 255 0
|
||||
142 | 0x00bf | ASCII | 2 | 48 | 0
|
||||
154 | 0x00c0 | ASCII | 21 | 2010 | 60 1 12 0 144 1 12 0
|
||||
166 | 0x0022 | SHORT | 1 | 65535 | 65535
|
||||
178 | 0x008a | SHORT | 1 | 1 | 1
|
||||
190 | 0x001e GPSDifferential | SHORT | 1 | 1 | 1
|
||||
202 | 0x001b GPSProcessingMethod | SHORT | 7 | 2032 | 0 6016 4016 6016 4016 ...
|
||||
214 | 0x0019 GPSDestDistanceRef | SRATIONAL | 1 | 2046 | 2046/0
|
||||
226 | 0x000e GPSTrackRef | UNDEFINED | 4 | 786688 | ...
|
||||
238 | 0x001c GPSAreaInformation | SHORT | 3 | 2054 | 0 1 6
|
||||
250 | 0x0018 GPSDestBearing | UNDEFINED | 4 | 393472 | ...
|
||||
262 | 0x0012 GPSMapDatum | UNDEFINED | 4 | 393472 | ...
|
||||
274 | 0x0009 GPSStatus | ASCII | 20 | 2060 |
|
||||
286 | 0x0017 GPSDestBearingRef | UNDEFINED | 4 | 393472 | ...
|
||||
298 | 0x00a8 | UNDEFINED | 49 | 2080 | 0106........................... ...
|
||||
310 | 0x0087 | BYTE | 1 | 0 |
|
||||
322 | 0x0008 FlashSetting | ASCII | 13 | 2130 |
|
||||
334 | 0x0007 Focus | ASCII | 7 | 2144 | AF-A
|
||||
346 | 0x00b1 | SHORT | 1 | 4 | 4
|
||||
358 | 0x0013 GPSDestLatitudeRef | SHORT | 2 | 13107200 | 0 200
|
||||
370 | 0x0002 ISOSpeed | SHORT | 2 | 13107200 | 0 200
|
||||
382 | 0x0016 GPSDestLongitude | SHORT | 4 | 2152 | 0 0 6000 4000
|
||||
394 | 0x00a2 | LONG | 1 | 6173648 | 6173648
|
||||
406 | 0x0084 | RATIONAL | 4 | 2160 | 180/0 10/0 2500/0 10/0
|
||||
418 | 0x008b | UNDEFINED | 4 | 786743 | 7..
|
||||
430 | 0x0083 | BYTE | 1 | 14 | .
|
||||
442 | 0x0095 | ASCII | 5 | 2192 | OFF
|
||||
454 | 0x000d GPSSpeed | UNDEFINED | 4 | 393472 | ...
|
||||
466 | 0x0004 Quality | ASCII | 8 | 2198 | NORMAL
|
||||
478 | 0x009e | SHORT | 10 | 2206 | 0 0 0 0 0 ...
|
||||
490 | 0x001d GPSDateStamp | ASCII | 8 | 2226 | 2567806
|
||||
502 | 0x0089 | SHORT | 1 | 0 | 0
|
||||
514 | 0x00a7 | LONG | 1 | 9608 | 9608
|
||||
526 | 0x00ab | ASCII | 16 | 2234 | AUTO(FLASH OFF)
|
||||
538 | 0x0001 Version | UNDEFINED | 4 | 825307696 | 0211
|
||||
550 | 0x000c GPSSpeedRef | RATIONAL | 4 | 2250 | 538/0 256/0 354/0 256/0
|
||||
562 | 0x0005 WhiteBalance | ASCII | 13 | 2282 | AUTO
|
||||
574 | 0x000b ProcessingSoftware | SSHORT | 2 | 0 | 0 0
|
||||
586 | 0x00b7 | UNDEFINED | 30 | 2296 | 0100....i....................
|
||||
598 | 0x0097 | UNDEFINED | 1188 | 2326 | 0219.dU....W..2......:.......F.# ...
|
||||
610 | 0x00b8 | UNDEFINED | 172 | 3514 | 0100..e........................ ...
|
||||
622 | 0x0025 | UNDEFINED | 14 | 3686 | H.....H......
|
||||
634 | 0x0098 | UNDEFINED | 33 | 3700 | 0204.W....z.o..#[.....!o.x..E... ...
|
||||
646 | 0x00b0 | UNDEFINED | 16 | 3734 | 0100...........
|
||||
658 | 0x0023 | UNDEFINED | 58 | 3750 | 0100STANDARD............STANDARD ...
|
||||
670 | 0x001f | UNDEFINED | 8 | 3808 | 0100...
|
||||
682 | 0x0024 | UNDEFINED | 4 | 65536 | ...
|
||||
END MemIo
|
||||
522 | 0x9286 UserComment | UNDEFINED | 44 | 4728 | ........ ...
|
||||
534 | 0x9290 SubSecTime | ASCII | 3 | 12336 | 00
|
||||
546 | 0x9291 SubSecTimeOriginal | ASCII | 3 | 12336 | 00
|
||||
558 | 0x9292 SubSecTimeDigitized | ASCII | 3 | 12336 | 00
|
||||
570 | 0xa000 FlashpixVersion | UNDEFINED | 4 | 808464688 | 0100
|
||||
582 | 0xa001 ColorSpace | SHORT | 1 | 1 | 1
|
||||
594 | 0xa002 PixelXDimension | LONG | 1 | 6000 | 6000
|
||||
606 | 0xa003 PixelYDimension | LONG | 1 | 4000 | 4000
|
||||
618 | 0xa217 SensingMethod | SHORT | 1 | 2 | 2
|
||||
630 | 0xa300 FileSource | UNDEFINED | 1 | 3 | .
|
||||
642 | 0xa301 SceneType | UNDEFINED | 1 | 1 | .
|
||||
654 | 0xa302 CFAPattern | UNDEFINED | 8 | 4772 | ........
|
||||
666 | 0xa401 CustomRendered | SHORT | 1 | 0 | 0
|
||||
678 | 0xa402 ExposureMode | SHORT | 1 | 0 | 0
|
||||
690 | 0xa403 WhiteBalance | SHORT | 1 | 0 | 0
|
||||
702 | 0xa404 DigitalZoomRatio | RATIONAL | 1 | 4780 | 4780/0
|
||||
714 | 0xa405 FocalLengthIn35mmFilm | SHORT | 1 | 66 | 66
|
||||
726 | 0xa406 SceneCaptureType | SHORT | 1 | 0 | 0
|
||||
738 | 0xa407 GainControl | SHORT | 1 | 0 | 0
|
||||
750 | 0xa408 Contrast | SHORT | 1 | 0 | 0
|
||||
762 | 0xa409 Saturation | SHORT | 1 | 0 | 0
|
||||
774 | 0xa40a Sharpness | SHORT | 1 | 0 | 0
|
||||
786 | 0xa40c SubjectDistanceRange | SHORT | 1 | 0 | 0
|
||||
798 | 0xa420 ImageUniqueID | ASCII | 33 | 4788 | 090caaf2c085f3e102513b24750041aa ...
|
||||
END MemIo
|
||||
178 | 0x8825 GPSTag | LONG | 1 | 4822 | 4822
|
||||
5072 | 0x0100 ImageWidth | LONG | 1 | 256 | 256
|
||||
5084 | 0x0101 ImageLength | LONG | 1 | 170 | 170
|
||||
5096 | 0x0102 BitsPerSample | SHORT | 3 | 5172 | 8 8 8
|
||||
5108 | 0x0103 Compression | SHORT | 1 | 6 | 6
|
||||
5120 | 0x0106 PhotometricInterpretation | SHORT | 1 | 6 | 6
|
||||
5132 | 0x0115 SamplesPerPixel | SHORT | 1 | 3 | 3
|
||||
5144 | 0x0201 JPEGInterchangeFormat | LONG | 1 | 5178 | 5178
|
||||
5156 | 0x0202 JPEGInterchangeFormatLeng | LONG | 1 | 6861 | 6861
|
||||
END MemIo
|
||||
XMP | 2864 | 184662 | <?xpacket begin="..." id="W5M0Mp
|
||||
<?xml version="1.0"?>
|
||||
<?xpacket
|
||||
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|
||||
<x:xmpmeta
|
||||
xmlns:x="adobe:ns:meta/"
|
||||
x:xmptk="XMP Core 4.4.0-Exiv2"
|
||||
> <rdf:RDF
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
> <rdf:Description
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
|
||||
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
|
||||
rdf:about=""
|
||||
dc:Format="image/webp"
|
||||
xmp:ModifyDate="2015-07-16T20:25:28+01:00"
|
||||
xmp:Rating="0"
|
||||
photoshop:AuthorsPosition="Stonehenge"
|
||||
> <dc:description
|
||||
> <rdf:Alt
|
||||
> <rdf:li
|
||||
xml:lang="x-default"
|
||||
>Classic View</rdf:li
|
||||
> </rdf:Alt
|
||||
> </dc:description
|
||||
> <dc:title
|
||||
> <rdf:Alt
|
||||
> <rdf:li
|
||||
xml:lang="x-default"
|
||||
>Stonehenge</rdf:li
|
||||
> </rdf:Alt
|
||||
> </dc:title
|
||||
> <dc:creator
|
||||
> <rdf:Seq
|
||||
> <rdf:li
|
||||
>Robin Mills</rdf:li
|
||||
> </rdf:Seq
|
||||
> </dc:creator
|
||||
> </rdf:Description
|
||||
> </rdf:RDF
|
||||
> </x:xmpmeta
|
||||
>
|
||||
<?xpacket
|
||||
end="w"?>
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 187526 | 0 | WEBP
|
||||
VP8X | 10 | 12 | ,........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172614 | II*........................... .
|
||||
XMP | 2864 | 184662 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 186958 | 0 | WEBP
|
||||
VP8X | 10 | 12 | .........
|
||||
VP8 | 172008 | 30 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172046 | II*........................... .
|
||||
XMP | 2864 | 184094 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 187526 | 0 | WEBP
|
||||
VP8X | 10 | 12 | ,........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172614 | II*........................... .
|
||||
XMP | 2864 | 184662 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 175478 | 0 | WEBP
|
||||
VP8X | 10 | 12 | $........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
XMP | 2864 | 172614 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 187526 | 0 | WEBP
|
||||
VP8X | 10 | 12 | ,........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172614 | II*........................... .
|
||||
XMP | 2864 | 184662 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 184654 | 0 | WEBP
|
||||
VP8X | 10 | 12 | (........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172614 | II*........................... .
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 187526 | 0 | WEBP
|
||||
VP8X | 10 | 12 | ,........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172614 | II*........................... .
|
||||
XMP | 2864 | 184662 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 174910 | 0 | WEBP
|
||||
VP8X | 10 | 12 | .........
|
||||
VP8 | 172008 | 30 | .G...*.. .>1..B.!..o.. ......]..
|
||||
XMP | 2864 | 172046 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 187526 | 0 | WEBP
|
||||
VP8X | 10 | 12 | ,........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172614 | II*........................... .
|
||||
XMP | 2864 | 184662 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 184086 | 0 | WEBP
|
||||
VP8X | 10 | 12 | .........
|
||||
VP8 | 172008 | 30 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172046 | II*........................... .
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 187526 | 0 | WEBP
|
||||
VP8X | 10 | 12 | ,........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172614 | II*........................... .
|
||||
XMP | 2864 | 184662 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 172038 | 0 | WEBP
|
||||
VP8X | 10 | 12 | .........
|
||||
VP8 | 172008 | 30 | .G...*.. .>1..B.!..o.. ......]..
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 187526 | 0 | WEBP
|
||||
VP8X | 10 | 12 | ,........
|
||||
ICCP | 560 | 30 | ...0ADBE....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 598 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 172614 | II*........................... .
|
||||
XMP | 2864 | 184662 | <?xpacket begin="..." id="W5M0Mp
|
||||
STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
|
||||
Chunk | Length | Offset | Payload
|
||||
RIFF | 190112 | 0 | WEBP
|
||||
VP8X | 10 | 12 | ,........
|
||||
ICCP | 3145 | 30 | ...HLino....mntrRGB XYZ ........
|
||||
VP8 | 172008 | 3184 | .G...*.. .>1..B.!..o.. ......]..
|
||||
EXIF | 12040 | 175200 | II*........................... .
|
||||
XMP | 2864 | 187248 | <?xpacket begin="..." id="W5M0Mp
|
||||
87
test/webp-test.sh
Executable file
87
test/webp-test.sh
Executable file
@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
# Test driver for webp
|
||||
|
||||
source ./functions.source
|
||||
|
||||
( cd "$testdir"
|
||||
|
||||
num=1199 # WebPImage
|
||||
printf "WebP " >&3
|
||||
filename=exiv2-bug$num.webp # http://dev.exiv2.org/attachments/download/1033/Stonehenge-with-icc.webp
|
||||
icc_name=exiv2-bug$num.icc
|
||||
exv_name=exiv2-bug$num.exv
|
||||
xmp_name=exiv2-bug$num.xmp
|
||||
|
||||
copyTestFile $filename
|
||||
runTest exiv2 -pS $filename
|
||||
runTest exiv2 -pR $filename
|
||||
runTest exiv2 -pX $filename | xmllint --pretty 2 -
|
||||
printf "delete " >&3
|
||||
# test deleting metadata
|
||||
for option in -dC -de -dx -dCe -dCx -dCxe; do
|
||||
copyTestFile $filename
|
||||
runTest exiv2 -pS $filename
|
||||
runTest exiv2 $option $filename
|
||||
runTest exiv2 -pS $filename
|
||||
done
|
||||
|
||||
printf "insert " >&3
|
||||
printf "ICC " >&3
|
||||
copyTestFile $filename
|
||||
exiv2 -pS $filename
|
||||
copyTestFile Reagan.tiff
|
||||
exiv2 -pC Reagan.tiff > $icc_name
|
||||
exiv2 -iC $filename
|
||||
exiv2 -pS $filename
|
||||
|
||||
if [ 1 == 0 ]; then
|
||||
printf "XMP -iX " >&3
|
||||
# copy the XMP from Reagan.tiff to test file
|
||||
copyTestFile Reagan.tiff
|
||||
exiv2 -pX Reagan.tiff > $xmp_name;
|
||||
copyTestFile $filename
|
||||
exiv2 -pS $filename
|
||||
exiv2 -iX $filename
|
||||
exiv2 -pS $filename
|
||||
|
||||
# copy the XMP from exiv2-bug937.jpg to test file
|
||||
copyTestFile exiv2-bug937.jpg
|
||||
exiv2 -pX exiv2-bug937.jpg > $xmp_name 2>/dev/null
|
||||
exiv2 -ix $filename
|
||||
exiv2 -pS $filename
|
||||
fi
|
||||
|
||||
if [ 1 == 0 ]; then
|
||||
printf "XMP -ix " >&3
|
||||
# copy the metadata from Reagan.tiff to test exv file
|
||||
copyTestFile Reagan.tiff
|
||||
exiv2 -ea Reagan.tiff
|
||||
mv Reagan.exf $exv_file
|
||||
|
||||
copyTestFile $filename
|
||||
exiv2 -pS $filename
|
||||
exiv2 -ix $filename
|
||||
exiv2 -pS $filename
|
||||
fi
|
||||
|
||||
if [ 1 == 0 ]; then
|
||||
printf "EXIF " >&3
|
||||
copyTestFile exiv2-bug937.jpg $filename
|
||||
exiv2 --force -ea $filename
|
||||
copyTestFile $filename
|
||||
exiv2 -pS $filename
|
||||
exiv2 -ie $filename
|
||||
exiv2 -pS $filename
|
||||
fi
|
||||
|
||||
) 3>&1 > $results 2>&1
|
||||
|
||||
printf "\n"
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Evaluate results
|
||||
cat $results | sed 's/\x0d$//' > $results-stripped
|
||||
reportTest $results-stripped $good
|
||||
|
||||
# That's all Folks!
|
||||
##
|
||||
Loading…
Reference in New Issue
Block a user