Added website/ directory.
@ -0,0 +1,48 @@
|
|||||||
|
Release checklist
|
||||||
|
-----------------
|
||||||
|
1 month before the release: Update po/ directory, notify translators
|
||||||
|
2 weeks before the release: Update po/ directory, remind translators
|
||||||
|
|
||||||
|
Update po/ directory
|
||||||
|
Update issues
|
||||||
|
Update ChangeLog
|
||||||
|
Update versions (see tagging script)
|
||||||
|
Review and update webpages
|
||||||
|
News page
|
||||||
|
Download page
|
||||||
|
Archive page
|
||||||
|
Index page
|
||||||
|
Other pages as needed, external links
|
||||||
|
Review and update documentation
|
||||||
|
API doc intro
|
||||||
|
Man page
|
||||||
|
Taglists
|
||||||
|
READMEs
|
||||||
|
Linux
|
||||||
|
Compile organize
|
||||||
|
Compile and run tests on Intel 32
|
||||||
|
Compile and run tests on AMD 64
|
||||||
|
Mac
|
||||||
|
Compile and run tests on Mac OSX
|
||||||
|
MinGW
|
||||||
|
Compile and run tests
|
||||||
|
MSVC
|
||||||
|
Compile with 7.1
|
||||||
|
Run tests with 7.1 executables
|
||||||
|
Compile with 8
|
||||||
|
Run tests with 8 executables
|
||||||
|
Compile with 9
|
||||||
|
Run tests with 9 executables
|
||||||
|
Compile with 10
|
||||||
|
Run tests with 10 executables
|
||||||
|
Tag release
|
||||||
|
Create packages
|
||||||
|
Finalize webpages with package information (bin/release_info.sh)
|
||||||
|
Publish webpages and packages locally
|
||||||
|
Download and test packages
|
||||||
|
Test Windows binary on Windows
|
||||||
|
Really publish webpages and packages
|
||||||
|
Validate uploaded webpages with W3C HTML checker
|
||||||
|
Exiv2 forum announcement
|
||||||
|
Facebook fan page update
|
||||||
|
Freshmeat.net announcement
|
@ -0,0 +1,192 @@
|
|||||||
|
TABLES = Exif \
|
||||||
|
Canon \
|
||||||
|
CanonCs \
|
||||||
|
CanonSi \
|
||||||
|
CanonCf \
|
||||||
|
CanonPi \
|
||||||
|
CanonFi \
|
||||||
|
CanonPa \
|
||||||
|
Fujifilm \
|
||||||
|
Minolta \
|
||||||
|
MinoltaCsNew \
|
||||||
|
MinoltaCs5D \
|
||||||
|
MinoltaCs7D \
|
||||||
|
Nikon1 \
|
||||||
|
Nikon2 \
|
||||||
|
Nikon3 \
|
||||||
|
NikonVr \
|
||||||
|
NikonPc \
|
||||||
|
NikonWt \
|
||||||
|
NikonIi \
|
||||||
|
NikonAf \
|
||||||
|
NikonAf2 \
|
||||||
|
NikonAFT \
|
||||||
|
NikonFi \
|
||||||
|
NikonMe \
|
||||||
|
NikonFl1 \
|
||||||
|
NikonFl2 \
|
||||||
|
NikonFl3 \
|
||||||
|
NikonSiD80 \
|
||||||
|
NikonSiD40 \
|
||||||
|
NikonSiD300a \
|
||||||
|
NikonSiD300b \
|
||||||
|
NikonSi01xx \
|
||||||
|
NikonCb1 \
|
||||||
|
NikonCb2 \
|
||||||
|
NikonCb2a \
|
||||||
|
NikonCb2b \
|
||||||
|
NikonCb3 \
|
||||||
|
NikonCb4 \
|
||||||
|
NikonLd1 \
|
||||||
|
NikonLd2 \
|
||||||
|
NikonLd3 \
|
||||||
|
Olympus \
|
||||||
|
OlympusCs \
|
||||||
|
OlympusEq \
|
||||||
|
OlympusRd \
|
||||||
|
OlympusRd2 \
|
||||||
|
OlympusIp \
|
||||||
|
OlympusFi \
|
||||||
|
OlympusFe1 \
|
||||||
|
OlympusRi \
|
||||||
|
Panasonic \
|
||||||
|
PanasonicRaw \
|
||||||
|
Pentax \
|
||||||
|
Samsung2 \
|
||||||
|
Sigma \
|
||||||
|
Sony1 \
|
||||||
|
SonyMinolta \
|
||||||
|
Sony1Cs \
|
||||||
|
Sony1Cs2 \
|
||||||
|
Sony1MltCs7D \
|
||||||
|
Sony1MltCsOld \
|
||||||
|
Sony1MltCsA100 \
|
||||||
|
Iptc
|
||||||
|
|
||||||
|
SCHEMA = dc \
|
||||||
|
xmp \
|
||||||
|
xmpRights \
|
||||||
|
xmpMM \
|
||||||
|
xmpBJ \
|
||||||
|
xmpTPg \
|
||||||
|
xmpDM \
|
||||||
|
pdf \
|
||||||
|
photoshop \
|
||||||
|
crs \
|
||||||
|
tiff \
|
||||||
|
exif \
|
||||||
|
aux \
|
||||||
|
iptc \
|
||||||
|
iptcExt \
|
||||||
|
MicrosoftPhoto \
|
||||||
|
digiKam \
|
||||||
|
kipi \
|
||||||
|
plus \
|
||||||
|
mediapro \
|
||||||
|
expressionmedia \
|
||||||
|
MP \
|
||||||
|
MPRI \
|
||||||
|
MPReg \
|
||||||
|
mwg-rs
|
||||||
|
|
||||||
|
all: html doc
|
||||||
|
|
||||||
|
.PHONY: html doc news clean update update-intro update-sample update-changelog \
|
||||||
|
update-makernotes publish really-publish
|
||||||
|
|
||||||
|
html: news
|
||||||
|
@bin/gen.py master/*.in
|
||||||
|
@echo "Moving files to html/ ..."
|
||||||
|
-@mv -f master/*.html master/*.php html/
|
||||||
|
|
||||||
|
news: var/__whatsnew-latest__ var/__whatsnew-table__ html/rss.xml
|
||||||
|
|
||||||
|
doc: html
|
||||||
|
@echo "Generating API documentation ... "
|
||||||
|
# Preprocessing
|
||||||
|
@sed -e 's,="include/,="../include/,' \
|
||||||
|
-e 's,="whatsnew.html#,="../whatsnew.html#,' \
|
||||||
|
html/draft-exiv2-header.html > html/exiv2-header.html
|
||||||
|
@sed 's,="include/,="../include/,' \
|
||||||
|
html/draft-exiv2-footer.html > html/exiv2-footer.html
|
||||||
|
@bin/gen.py doxygen/mainpage.hpp.in
|
||||||
|
# API doc generation
|
||||||
|
doxygen-1.5.4 doxygen/Doxyfile
|
||||||
|
# Postprocessing
|
||||||
|
@sed 's,<h1>Exiv2 Class Index</h1>,<h1>Image metadata library and tools</h1><h2>Exiv2 Class index</h2>,' html/doc/classes.html > html/doc/ttt
|
||||||
|
@mv -f html/doc/ttt html/doc/classes.html
|
||||||
|
@sed 's,<h1>Exiv2 Namespace List</h1>,<h1>Image metadata library and tools</h1><h2>Exiv2 Namespaces</h2>,' html/doc/namespaces.html > html/doc/ttt
|
||||||
|
@mv -f html/doc/ttt html/doc/namespaces.html
|
||||||
|
@sed 's,<h1>Exiv2 File List</h1>,<h1>Image metadata library and tools</h1><h2>Exiv2 File list</h2>,' html/doc/files.html > html/doc/ttt
|
||||||
|
@mv -f html/doc/ttt html/doc/files.html
|
||||||
|
@sed 's,<h1>Exiv2 Examples</h1>,<h1>Image metadata library and tools</h1><h2>Exiv2 Examples</h2>,' html/doc/examples.html > html/doc/ttt
|
||||||
|
@mv -f html/doc/ttt html/doc/examples.html
|
||||||
|
-@cp -f doxygen/doxygen.css html/doc
|
||||||
|
# Cleanup
|
||||||
|
-@rm -f html/exiv2-header.html
|
||||||
|
-@rm -f html/exiv2-footer.html
|
||||||
|
-@rm -f html/draft-exiv2-header.html
|
||||||
|
-@rm -f html/draft-exiv2-footer.html
|
||||||
|
-@rm -f html/doc/namespacemembers*.html
|
||||||
|
-@rm -f html/doc/functions*.html
|
||||||
|
|
||||||
|
var/__whatsnew-table__: master/news.xml
|
||||||
|
@echo "Generating news table ..."
|
||||||
|
@xsltproc master/whatsnew-table.xsl $< > $@
|
||||||
|
|
||||||
|
var/__whatsnew-latest__: master/news.xml
|
||||||
|
@echo "Generating latest news ..."
|
||||||
|
@xsltproc master/whatsnew-latest.xsl $< > $@
|
||||||
|
|
||||||
|
html/rss.xml: master/news.xml
|
||||||
|
@echo "Generating RSS feed ..."
|
||||||
|
@xsltproc master/whatsnew-rss.xsl $< \
|
||||||
|
| awk '/pubDate/ { gsub("<[/]?pubDate>", ""); printf " <pubDate>"; system("bin/rssdate " $$0); printf "</pubDate>\n"; next } /__lastBuildDate__/ { printf " <lastBuildDate>"; system("date -R"); printf " </lastBuildDate>\n"; next; } {print}' > $@
|
||||||
|
|
||||||
|
# Run bin/release_info.sh to update release related variables (incl __version__)
|
||||||
|
update: update-manpage update-intro update-sample update-changelog update-tags update-makernotes
|
||||||
|
|
||||||
|
update-manpage:
|
||||||
|
@man -t exiv2 | ps2pdf - html/exiv2-manpage.pdf
|
||||||
|
@cat ../src/exiv2.1 | sed '/^JPEG/ i\
|
||||||
|
' | man2html -Hlinux.die.net -M/man -p | sed -e's,\(HREF=.*\)+,\1/,' -e'1,15d' -e'/NAME="index"/,$$d' \
|
||||||
|
| sed -e's/ <<A HREF="mailto.*>//' -e'$$d' > var/__manpage__
|
||||||
|
|
||||||
|
update-intro:
|
||||||
|
@cp -f ../doc/templates/__intro__ doxygen/draft-intro.html
|
||||||
|
@sed -e 's,="makernote.html,="../makernote.html,' \
|
||||||
|
-e 's,<a href="mailto:ahuggel@gmx.net"> contact me</a>,contact me,' \
|
||||||
|
doxygen/draft-intro.html > doxygen/intro.html
|
||||||
|
@rm -f doxygen/draft-intro.html
|
||||||
|
|
||||||
|
update-sample:
|
||||||
|
@./bin/sample.sh
|
||||||
|
|
||||||
|
update-changelog:
|
||||||
|
@cp -f ../doc/ChangeLog var/__ChangeLog__
|
||||||
|
@bin/buglinks.sh var/__ChangeLog__
|
||||||
|
|
||||||
|
update-makernotes:
|
||||||
|
@cp -f ../doc/templates/__makernotes__ var/__makernotes__
|
||||||
|
|
||||||
|
$(TABLES):
|
||||||
|
@cp -f ../doc/templates/__$@__ var/__$@__
|
||||||
|
|
||||||
|
$(SCHEMA):
|
||||||
|
@cp -f ../doc/templates/__xmp_$@__ var/__xmp_$@__
|
||||||
|
|
||||||
|
update-tags: $(TABLES) $(SCHEMA)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@rm -vf html/*.html
|
||||||
|
@rm -vf html/rss.xml
|
||||||
|
@rm -rf html/doc
|
||||||
|
@rm -vf var/__whatsnew-latest__
|
||||||
|
@rm -vf var/__whatsnew-table__
|
||||||
|
@rm -vf doxygen/mainpage.hpp
|
||||||
|
|
||||||
|
publish:
|
||||||
|
rsync -vlDtrz --delete --exclude='.svn' -e ssh html/ andreas@localhost:rs
|
||||||
|
|
||||||
|
really-publish:
|
||||||
|
rsync -vlDtrz --delete --exclude='misc/' --exclude='.svn' -e "ssh -2 -i /home/andreas/.ssh/ahuggel.key" html/ ahuggel@exiv2.org:
|
@ -0,0 +1,64 @@
|
|||||||
|
**** UNDER CONSTRUCTION ****
|
||||||
|
|
||||||
|
The website/ directory contains the source code required to build the
|
||||||
|
web pages for exiv2.org as well as scripts to build exiv2 releases.
|
||||||
|
|
||||||
|
How to build the website
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
- Build and install exiv2, build the samples and doc. And while you're
|
||||||
|
at it, it never hurts to also run the tests.
|
||||||
|
- Build bin/rssdate from the source file bin/rssdate.cpp
|
||||||
|
- Define the environment variable EXIV2HOME to the path of your exiv2
|
||||||
|
directory, i.e., the parent directory of website/
|
||||||
|
- Run 'make update' to import whatever is required from the rest of the
|
||||||
|
exiv2 sources (doc/, samples/, src/)
|
||||||
|
- Run 'make' to build the web pages
|
||||||
|
|
||||||
|
Subsequently, 'make clean; make' will remove and rebuild the web
|
||||||
|
pages; 'make update' is only needed if something changed in the exiv2
|
||||||
|
source or doc.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
------------
|
||||||
|
|
||||||
|
- python
|
||||||
|
- doxygen-1.5.4 must be available in the path with this name
|
||||||
|
- xsltproc
|
||||||
|
- ps2pdf
|
||||||
|
- man2html
|
||||||
|
- ...
|
||||||
|
|
||||||
|
Generated HTML pages
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Master HTML files
|
||||||
|
To modify HTML content, change the master HTML files master/*.in.
|
||||||
|
Do _not_ change the html/*.html files. These are generated files.
|
||||||
|
|
||||||
|
Placeholders
|
||||||
|
The master HTML files contain placeholders for HTML code that is
|
||||||
|
common to multiple files. Placeholders are strings of the form
|
||||||
|
__placeholder__. The content for each placeholder is in a file
|
||||||
|
var/__placeholder__. A special placeholder is __last_modified__: It
|
||||||
|
doesn't need a corresponding file in the var/ directory to be
|
||||||
|
substituted. Instead, every occurrence of __last_modified__ is
|
||||||
|
automatically replaced with the current date.
|
||||||
|
|
||||||
|
Substitution of placeholders
|
||||||
|
A small Python script bin/gen.py performs the substitutions. Variables
|
||||||
|
are substituted in one pass, in alphabetical order. Thus variables in
|
||||||
|
the content of another placeholder only get substituted if their names
|
||||||
|
are greater than the name of the containing placeholder. The special
|
||||||
|
variable __last_modified__ is substituted after all regular
|
||||||
|
placeholders, so it can occur in the content of any other placeholder.
|
||||||
|
|
||||||
|
News
|
||||||
|
The file news.xml contains all news items. There are two stylesheets
|
||||||
|
(whatsnew-table.xsl, whatsnew-latest.xsl) which are used to create
|
||||||
|
placeholders __whatsnew-table__ and __whatsnew-latest__. To add or
|
||||||
|
change news items, only change the news.xml masterfile and run make.
|
||||||
|
|
||||||
|
Makefile
|
||||||
|
To re-generate the HTML pages from the master files and move them
|
||||||
|
to the html/ directory, run "make" in this directory
|
@ -0,0 +1,16 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Fix < and > signs and replace bugnumbers in the file given
|
||||||
|
# (ChangeLog) with links to Redmine issues.
|
||||||
|
|
||||||
|
if [ $# -ne 1 ] ; then
|
||||||
|
echo Usage: buglinks.sh ChangeLog
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
file=$1
|
||||||
|
|
||||||
|
sed -e 's/\&/\&/g' -e 's/</\</g' -e 's/>/\>/g' $file > $file.tmp
|
||||||
|
mv $file.tmp $file
|
||||||
|
|
||||||
|
sed -e 's,\#\([1-9][0-9][0-9]\),<a title="bug \1" href="http://dev.exiv2.org/issues/show/\1">#\1</a>,g; s,\([0-9][0-9][0-9][0-9][0-9][0-9][0-9]\),<a title="bug \1" href="http://dev.exiv2.org/issues/show/\1">\1</a>,g' $file > $file.tmp
|
||||||
|
mv $file.tmp $file
|
@ -0,0 +1,76 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Export and build an exiv2 release, 26-Jan-06, ahu
|
||||||
|
|
||||||
|
if [ $# -eq 0 ] ; then
|
||||||
|
echo "Usage: `basename $0` <tagname>|trunk"
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
Export and build an Exiv2 release.
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rel=$1
|
||||||
|
(
|
||||||
|
if [ -e $rel ] ; then
|
||||||
|
echo File $rel already exists, exiting...
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -e exiv2-$rel ] ; then
|
||||||
|
echo File exiv2-$rel already exists, exiting...
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo Exporting sources, this may take a while...
|
||||||
|
|
||||||
|
path=tags/$rel
|
||||||
|
if [ $rel = trunk ] ; then
|
||||||
|
path=trunk
|
||||||
|
fi
|
||||||
|
svn export svn://dev.exiv2.org/svn/$path
|
||||||
|
mv $rel exiv2-$rel
|
||||||
|
|
||||||
|
# Prepare the source code
|
||||||
|
cd exiv2-$rel
|
||||||
|
make config
|
||||||
|
./configure --disable-shared
|
||||||
|
make -j3
|
||||||
|
make install
|
||||||
|
make samples
|
||||||
|
make doc
|
||||||
|
cd test
|
||||||
|
make
|
||||||
|
cd ..
|
||||||
|
rm -f ABOUT-NLS
|
||||||
|
rm -f .gitignore
|
||||||
|
rm -rf test/
|
||||||
|
rm -rf kdevelop/
|
||||||
|
make distclean
|
||||||
|
rm -f Makefile
|
||||||
|
rm -f bootstrap.linux
|
||||||
|
rm -f msvc64\\runner.txt
|
||||||
|
find . -type f -name '*[Cc][Mm][Aa][Kk][Ee]*' | xargs rm -f
|
||||||
|
rm -rf xmpsdk/src/.libs
|
||||||
|
|
||||||
|
# Create source and doc packages
|
||||||
|
cd ..
|
||||||
|
tar zcvf exiv2-$rel-doc.tar.gz exiv2-$rel/doc/index.html exiv2-$rel/doc/html exiv2-$rel/doc/include
|
||||||
|
rm -rf exiv2-$rel/doc/html
|
||||||
|
tar zcvf exiv2-$rel.tar.gz exiv2-$rel
|
||||||
|
|
||||||
|
# Test the tarball: unpack, build and run tests
|
||||||
|
rm -rf exiv2-$rel
|
||||||
|
tar zxvf exiv2-$rel.tar.gz
|
||||||
|
cd exiv2-$rel
|
||||||
|
./configure
|
||||||
|
make -j3
|
||||||
|
make install
|
||||||
|
make samples
|
||||||
|
echo Exporting tests, this may take a while...
|
||||||
|
svn export svn://dev.exiv2.org/svn/tags/$rel/test
|
||||||
|
du -sk test/
|
||||||
|
cd test
|
||||||
|
make
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
) 2>&1 | tee exiv2-buildrelease-$rel.out 2>&1
|
@ -0,0 +1,50 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Cross-compile Exiv2 executable for Windows
|
||||||
|
# 17-Mar-07, ahu
|
||||||
|
|
||||||
|
if [ $# -eq 0 ] ; then
|
||||||
|
echo "Usage: `basename $0` directory"
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
Cross-compile Exiv2 executable for Windows and build -win package.
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
dir=$1
|
||||||
|
(
|
||||||
|
if [ ! -e $dir ] ; then
|
||||||
|
echo "Error: Directory $dir doesn't exist."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configure and cross-compile
|
||||||
|
cd $dir
|
||||||
|
make maintainer-clean
|
||||||
|
make config
|
||||||
|
./configure --disable-shared --disable-visibility --target=i586-mingw32msvc --host=i586-mingw32msvc --build=i586-linux --disable-nls --with-zlib=$HOME/mingw --with-libiconv-prefix=$HOME/mingw --with-expat=$HOME/mingw
|
||||||
|
make -j3
|
||||||
|
|
||||||
|
# Prepare package
|
||||||
|
cd src
|
||||||
|
rel=`grep EXV_PACKAGE_VERSION ../msvc/include/exv_msvc.h | sed 's/.*"\(.*\)"/\1/'`
|
||||||
|
tmpdir=exiv2-$rel-win
|
||||||
|
rm -rf $tmpdir
|
||||||
|
mkdir $tmpdir
|
||||||
|
cp exiv2 $tmpdir/exiv2.exe
|
||||||
|
cd $tmpdir
|
||||||
|
strip exiv2.exe
|
||||||
|
cp ../../doc/cmd.txt .
|
||||||
|
cp ../../doc/cmdxmp.txt .
|
||||||
|
cp $HOME/mingw/dll/libexpat.dll .
|
||||||
|
todos cmd.txt cmdxmp.txt
|
||||||
|
$HOME/src/exiv2/exiv2-htmlman.sh ../exiv2.1
|
||||||
|
zip exiv2-$rel-win.zip exiv2.exe cmd.txt cmdxmp.txt exiv2-man.html libexpat.dll
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
mv exiv2-$rel-win.zip ../../..
|
||||||
|
cd ..
|
||||||
|
rm -rf $tmpdir
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
) 2>&1 | tee exiv2-buildwinexe.out 2>&1
|
@ -0,0 +1,13 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
if [ $# -eq 0 ] ; then
|
||||||
|
echo "Usage: `basename $0` manpage"
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
Convert manpage to html and make external links point to linux.die.net.
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat $1 | sed '/^JPEG/ i\
|
||||||
|
' | man2html -Hlinux.die.net -M/man -p | sed -e's,\(HREF=.*\)+,\1/,' > exiv2-man.html
|
@ -0,0 +1,34 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
wget http://www.rottmerhusen.com/objektives/lensid/files/c-header/fmountlens4.h
|
||||||
|
|
||||||
|
grep 'List of AF F-Mount lenses - Version .*' fmountlens4.h > /tmp/newversion
|
||||||
|
grep 'List of AF F-Mount lenses - Version .*' nikonmn.cpp > /tmp/oldversion
|
||||||
|
diff /tmp/oldversion /tmp/newversion
|
||||||
|
if [ $? -eq 0 ] ; then
|
||||||
|
echo "We already have the latest version."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat nikonmn.cpp | awk '
|
||||||
|
/8< - - - 8< do not remove this line >8 - - - >8/ {
|
||||||
|
if (!s) {
|
||||||
|
s = 1
|
||||||
|
print
|
||||||
|
system("cat fmountlens4.h")
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
s = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
if (s) next;
|
||||||
|
print
|
||||||
|
}' > new-nikonmn.cpp
|
||||||
|
|
||||||
|
sed 's/struct {unsigned char lid,stps,focs,focl,aps,apl,lfw/static const struct {unsigned char lid,stps,focs,focl,aps,apl,lfw/' new-nikonmn.cpp > nikonmn.cpp
|
||||||
|
|
||||||
|
ver=`cat /tmp/newversion | awk '{print $9}'`
|
||||||
|
echo
|
||||||
|
echo "Updated Nikon Lens lookup table to v$ver of Robert Rottmerhusen's fmountlens list."
|
||||||
|
rm -f fmountlens4.h /tmp/newversion /tmp/oldversion new-nikonmn.cpp
|
@ -0,0 +1,43 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Tag an exiv2 release, 26-Jan-06, ahu
|
||||||
|
|
||||||
|
# Steps to create a package for release
|
||||||
|
# =====================================
|
||||||
|
|
||||||
|
# Manual: Update ChangeLog
|
||||||
|
|
||||||
|
# Manual: Update release number. The files that need changes are:
|
||||||
|
# - config/configure.ac
|
||||||
|
# - msvc/include/exv_msvc.h
|
||||||
|
# - msvc64/include/exv_msvc.h
|
||||||
|
# - src/version.hpp
|
||||||
|
# - test/data/exiv2-test.out
|
||||||
|
# - CMakeLists.txt
|
||||||
|
|
||||||
|
if [ $# -eq 0 ] ; then
|
||||||
|
echo "Usage: `basename $0` tagname [branch]"
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
Tag the Exiv2 repository.
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rel=$1
|
||||||
|
bra=trunk
|
||||||
|
pre=
|
||||||
|
if [ $# -eq 2 ] ; then
|
||||||
|
bra=branches/$2
|
||||||
|
pre="[$2] "
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "You're about to tag $bra as release $rel, using the following command"
|
||||||
|
echo "svn copy svn://dev.exiv2.org/svn/$bra svn://dev.exiv2.org/svn/tags/$rel -m\"${pre}Tagged release $rel\""
|
||||||
|
echo -n "Continue? [n] : "
|
||||||
|
read var
|
||||||
|
|
||||||
|
if [ x$var = xy ] ; then
|
||||||
|
# Tag the release
|
||||||
|
echo Tagging $bra as release $rel, this may take a while...
|
||||||
|
svn copy svn://dev.exiv2.org/svn/$bra svn://dev.exiv2.org/svn/tags/$rel -m"${pre}Tagged release $rel"
|
||||||
|
fi
|
@ -0,0 +1,57 @@
|
|||||||
|
#! /usr/bin/env python
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# Settings
|
||||||
|
vardir = "./var"
|
||||||
|
date_format = "%d-%b-%Y"
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# functions
|
||||||
|
def usage():
|
||||||
|
print """Usage: gen.py file.in [...]
|
||||||
|
Substitute placeholders in input files with content
|
||||||
|
"""
|
||||||
|
|
||||||
|
def gen_html(file):
|
||||||
|
"""Replace variables in the file with their content"""
|
||||||
|
text = open(file).read()
|
||||||
|
for var in vars:
|
||||||
|
vartext = open(vardir + "/" + var).read()
|
||||||
|
text = text.replace(var, vartext)
|
||||||
|
text = last_modified(text)
|
||||||
|
return text
|
||||||
|
|
||||||
|
def last_modified(text):
|
||||||
|
"""Substitute variable __last_modified__ with the current date"""
|
||||||
|
date = time.strftime(date_format, time.localtime())
|
||||||
|
text = text.replace("__last_modified__", date)
|
||||||
|
return text
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# main
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import time
|
||||||
|
|
||||||
|
# Check command line arguments
|
||||||
|
if len(sys.argv) == 1:
|
||||||
|
usage()
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
# The input files from the command line
|
||||||
|
input = sys.argv[1:]
|
||||||
|
|
||||||
|
# Get a list of all variables (files in the form __*__) from vardir
|
||||||
|
vars = os.listdir(vardir)
|
||||||
|
for i in range(len(vars)-1, -1, -1):
|
||||||
|
if re.match("^__.*__$", vars[i]): continue
|
||||||
|
del vars[i]
|
||||||
|
vars.sort()
|
||||||
|
|
||||||
|
# Substitute variables in all input files
|
||||||
|
print "Substituting variables", vars
|
||||||
|
for file in input:
|
||||||
|
print "Processing", file, "..."
|
||||||
|
text = gen_html(file)
|
||||||
|
file = file.replace(".in", "")
|
||||||
|
open(file, 'w').write(text)
|
@ -0,0 +1,25 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Create variables for a new release
|
||||||
|
|
||||||
|
basedir=.
|
||||||
|
|
||||||
|
if [ $# -ne 1 ] ; then
|
||||||
|
echo Usage: release_info.sh version
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
version=$1
|
||||||
|
|
||||||
|
echo -n $version > $basedir/var/__version__
|
||||||
|
|
||||||
|
date +'%d-%b-%Y' | tr -d '\n' > $basedir/var/__rel_date_src_pkg__
|
||||||
|
#date +'%d-%b-%Y' | tr -d '\n' > $basedir/var/__rel_date_doc_pkg__
|
||||||
|
date +'%d-%b-%Y' | tr -d '\n' > $basedir/var/__rel_date_win_pkg__
|
||||||
|
|
||||||
|
ls -la html/exiv2-${version}.tar.gz | awk '{printf "%s", $5}' > $basedir/var/__size_src_pkg__
|
||||||
|
#ls -la html/exiv2-${version}-doc.tar.gz | awk '{printf "%s", $5}' > $basedir/var/__size_doc_pkg__
|
||||||
|
ls -la html/exiv2-${version}-win.zip | awk '{printf "%s", $5}' > $basedir/var/__size_win_pkg__
|
||||||
|
|
||||||
|
md5sum html/exiv2-${version}.tar.gz | awk '{printf "%s", $1}' > $basedir/var/__md5sum_src_pkg__
|
||||||
|
#md5sum html/exiv2-${version}-doc.tar.gz | awk '{printf "%s", $1}' > $basedir/var/__md5sum_doc_pkg__
|
||||||
|
md5sum html/exiv2-${version}-win.zip | awk '{printf "%s", $1}' > $basedir/var/__md5sum_win_pkg__
|
@ -0,0 +1,16 @@
|
|||||||
|
#! /usr/bin/env python
|
||||||
|
# Remove links from HTML code
|
||||||
|
# 05-Jun-05, -ahu.
|
||||||
|
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Check command line arguments
|
||||||
|
if len(sys.argv) != 2:
|
||||||
|
print """Usage: rmlink.py <file>
|
||||||
|
Remove links from HTML code
|
||||||
|
"""
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
e = re.compile('<a.*?>(.*?)</a>', re.VERBOSE)
|
||||||
|
print e.sub(r'\1', open(sys.argv[1]).read())
|
@ -0,0 +1,22 @@
|
|||||||
|
// g++ rssdate.cpp -o rssdate
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
int main(int argc, char* const argv[])
|
||||||
|
{
|
||||||
|
if (argc != 2) {
|
||||||
|
std::cout << "Usage: " << argv[0] << " dd-Mon-yyyy\n";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
struct tm tm;
|
||||||
|
strptime(argv[1], "%d-%b-%Y", &tm);
|
||||||
|
char s[128];
|
||||||
|
strftime(s, 128, "%a, %d %b %Y 00:00:00 +0800", &tm);
|
||||||
|
std::cout << s;
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Generate variables used for the sample.html page
|
||||||
|
# The appropriate exiv2 must be built
|
||||||
|
|
||||||
|
exiv2=$EXIV2HOME/bin/exiv2
|
||||||
|
vp=../../var
|
||||||
|
|
||||||
|
cd html/include/ >/dev/null 2>&1
|
||||||
|
$exiv2 img_1771.jpg > $vp/__sample-p__
|
||||||
|
$exiv2 -pt img_1771.jpg > $vp/__sample-pt__
|
||||||
|
$exiv2 -h > $vp/sample-h.tmp
|
||||||
|
sed -e 's/</\</g' -e 's/>/\>/g' $vp/sample-h.tmp > $vp/__sample-h__
|
||||||
|
rm -f $vp/sample-h.tmp
|
@ -0,0 +1,28 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Copy the tag tables from the documentation.
|
||||||
|
# The documentation must be built.
|
||||||
|
tabs="__Canon__ \
|
||||||
|
__CanonCs__ \
|
||||||
|
__CanonSi__ \
|
||||||
|
__CanonPa__ \
|
||||||
|
__CanonCf__ \
|
||||||
|
__CanonPi__ \
|
||||||
|
__Exif__ \
|
||||||
|
__Fujifilm__ \
|
||||||
|
__Iptc__ \
|
||||||
|
__Minolta__ \
|
||||||
|
__MinoltaCsNew__ \
|
||||||
|
__MinoltaCs5D__ \
|
||||||
|
__MinoltaCs7D__ \
|
||||||
|
__Nikon1__ \
|
||||||
|
__Nikon2__ \
|
||||||
|
__Nikon3__ \
|
||||||
|
__Olympus__ \
|
||||||
|
__Panasonic__ \
|
||||||
|
__Sigma__ \
|
||||||
|
__Sony__"
|
||||||
|
|
||||||
|
exv_base=./exiv2
|
||||||
|
|
||||||
|
for i in $tabs; do cp -f $exv_base/doc/templates/$i var/; done
|
@ -0,0 +1,342 @@
|
|||||||
|
DIV.qindex {
|
||||||
|
width: 100%;
|
||||||
|
background-color: #e8eef2;
|
||||||
|
border: 1px solid #84b0c7;
|
||||||
|
text-align: center;
|
||||||
|
margin: 2px;
|
||||||
|
padding: 2px;
|
||||||
|
line-height: 140%;
|
||||||
|
}
|
||||||
|
DIV.nav {
|
||||||
|
width: 100%;
|
||||||
|
background-color: #e8eef2;
|
||||||
|
border: 1px solid #84b0c7;
|
||||||
|
text-align: center;
|
||||||
|
margin: 2px;
|
||||||
|
padding: 2px;
|
||||||
|
line-height: 140%;
|
||||||
|
}
|
||||||
|
DIV.navtab {
|
||||||
|
background-color: #e8eef2;
|
||||||
|
border: 1px solid #84b0c7;
|
||||||
|
text-align: center;
|
||||||
|
margin: 2px;
|
||||||
|
margin-right: 15px;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
TD.navtab {
|
||||||
|
font-size: 70%;
|
||||||
|
}
|
||||||
|
A.qindex {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #1A419D;
|
||||||
|
}
|
||||||
|
A.qindex:visited {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #1A419D
|
||||||
|
}
|
||||||
|
A.qindex:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: #ddddff;
|
||||||
|
}
|
||||||
|
A.qindexHL {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: #6666cc;
|
||||||
|
color: #ffffff;
|
||||||
|
border: 1px double #9295C2;
|
||||||
|
}
|
||||||
|
A.qindexHL:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: #6666cc;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
|
||||||
|
A.el { text-decoration: none; font-weight: bold }
|
||||||
|
A.elRef { font-weight: bold }
|
||||||
|
A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
|
||||||
|
A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
|
||||||
|
A.codeRef:link { font-weight: normal; color: #0000FF}
|
||||||
|
A.codeRef:visited { font-weight: normal; color: #0000FF}
|
||||||
|
A:hover { text-decoration: none; background-color: #f2f2ff }
|
||||||
|
DL.el { margin-left: -1cm }
|
||||||
|
.fragment {
|
||||||
|
font-family: monospace, fixed;
|
||||||
|
font-size: 95%;
|
||||||
|
}
|
||||||
|
PRE.fragment {
|
||||||
|
border: 1px solid #CCCCCC;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
margin-top: 4px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: 8px;
|
||||||
|
padding-left: 6px;
|
||||||
|
padding-right: 6px;
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 4px;
|
||||||
|
}
|
||||||
|
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
|
||||||
|
|
||||||
|
DIV.groupHeader {
|
||||||
|
margin-left: 16px;
|
||||||
|
margin-top: 12px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
|
||||||
|
BODY {
|
||||||
|
background: white;
|
||||||
|
color: black;
|
||||||
|
margin-right: 20px;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
TD.indexkey {
|
||||||
|
background-color: #e8eef2;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-right : 10px;
|
||||||
|
padding-top : 2px;
|
||||||
|
padding-left : 10px;
|
||||||
|
padding-bottom : 2px;
|
||||||
|
margin-left : 0px;
|
||||||
|
margin-right : 0px;
|
||||||
|
margin-top : 2px;
|
||||||
|
margin-bottom : 2px;
|
||||||
|
border: 1px solid #CCCCCC;
|
||||||
|
}
|
||||||
|
TD.indexvalue {
|
||||||
|
background-color: #e8eef2;
|
||||||
|
font-style: italic;
|
||||||
|
padding-right : 10px;
|
||||||
|
padding-top : 2px;
|
||||||
|
padding-left : 10px;
|
||||||
|
padding-bottom : 2px;
|
||||||
|
margin-left : 0px;
|
||||||
|
margin-right : 0px;
|
||||||
|
margin-top : 2px;
|
||||||
|
margin-bottom : 2px;
|
||||||
|
border: 1px solid #CCCCCC;
|
||||||
|
}
|
||||||
|
TR.memlist {
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
}
|
||||||
|
P.formulaDsp { text-align: center; }
|
||||||
|
IMG.formulaDsp { }
|
||||||
|
IMG.formulaInl { vertical-align: middle; }
|
||||||
|
SPAN.keyword { color: #008000 }
|
||||||
|
SPAN.keywordtype { color: #604020 }
|
||||||
|
SPAN.keywordflow { color: #e08000 }
|
||||||
|
SPAN.comment { color: #800000 }
|
||||||
|
SPAN.preprocessor { color: #806020 }
|
||||||
|
SPAN.stringliteral { color: #002080 }
|
||||||
|
SPAN.charliteral { color: #008080 }
|
||||||
|
.mdescLeft {
|
||||||
|
padding: 0px 8px 4px 8px;
|
||||||
|
font-size: 80%;
|
||||||
|
font-style: italic;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
border-top: 1px none #E0E0E0;
|
||||||
|
border-right: 1px none #E0E0E0;
|
||||||
|
border-bottom: 1px none #E0E0E0;
|
||||||
|
border-left: 1px none #E0E0E0;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
.mdescRight {
|
||||||
|
padding: 0px 8px 4px 8px;
|
||||||
|
font-size: 80%;
|
||||||
|
font-style: italic;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
border-top: 1px none #E0E0E0;
|
||||||
|
border-right: 1px none #E0E0E0;
|
||||||
|
border-bottom: 1px none #E0E0E0;
|
||||||
|
border-left: 1px none #E0E0E0;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
.memItemLeft {
|
||||||
|
padding: 1px 0px 0px 8px;
|
||||||
|
margin: 4px;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
border-top-color: #E0E0E0;
|
||||||
|
border-right-color: #E0E0E0;
|
||||||
|
border-bottom-color: #E0E0E0;
|
||||||
|
border-left-color: #E0E0E0;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-right-style: none;
|
||||||
|
border-bottom-style: none;
|
||||||
|
border-left-style: none;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.memItemRight {
|
||||||
|
padding: 1px 8px 0px 8px;
|
||||||
|
margin: 4px;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
border-top-color: #E0E0E0;
|
||||||
|
border-right-color: #E0E0E0;
|
||||||
|
border-bottom-color: #E0E0E0;
|
||||||
|
border-left-color: #E0E0E0;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-right-style: none;
|
||||||
|
border-bottom-style: none;
|
||||||
|
border-left-style: none;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.memTemplItemLeft {
|
||||||
|
padding: 1px 0px 0px 8px;
|
||||||
|
margin: 4px;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
border-top-color: #E0E0E0;
|
||||||
|
border-right-color: #E0E0E0;
|
||||||
|
border-bottom-color: #E0E0E0;
|
||||||
|
border-left-color: #E0E0E0;
|
||||||
|
border-top-style: none;
|
||||||
|
border-right-style: none;
|
||||||
|
border-bottom-style: none;
|
||||||
|
border-left-style: none;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.memTemplItemRight {
|
||||||
|
padding: 1px 8px 0px 8px;
|
||||||
|
margin: 4px;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
border-top-color: #E0E0E0;
|
||||||
|
border-right-color: #E0E0E0;
|
||||||
|
border-bottom-color: #E0E0E0;
|
||||||
|
border-left-color: #E0E0E0;
|
||||||
|
border-top-style: none;
|
||||||
|
border-right-style: none;
|
||||||
|
border-bottom-style: none;
|
||||||
|
border-left-style: none;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.memTemplParams {
|
||||||
|
padding: 1px 0px 0px 8px;
|
||||||
|
margin: 4px;
|
||||||
|
border-top-width: 1px;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-left-width: 1px;
|
||||||
|
border-top-color: #E0E0E0;
|
||||||
|
border-right-color: #E0E0E0;
|
||||||
|
border-bottom-color: #E0E0E0;
|
||||||
|
border-left-color: #E0E0E0;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-right-style: none;
|
||||||
|
border-bottom-style: none;
|
||||||
|
border-left-style: none;
|
||||||
|
color: #606060;
|
||||||
|
background-color: #FAFAFA;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
.search { color: #003399;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
FORM.search {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
margin-top: 0px;
|
||||||
|
}
|
||||||
|
INPUT.search { font-size: 75%;
|
||||||
|
color: #000080;
|
||||||
|
font-weight: normal;
|
||||||
|
background-color: #e8eef2;
|
||||||
|
}
|
||||||
|
TD.tiny { font-size: 75%;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #1A41A8;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: #2A3798;
|
||||||
|
}
|
||||||
|
.dirtab { padding: 4px;
|
||||||
|
border-collapse: collapse;
|
||||||
|
border: 1px solid #84b0c7;
|
||||||
|
}
|
||||||
|
TH.dirtab { background: #e8eef2;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
HR { height: 1px;
|
||||||
|
border: none;
|
||||||
|
border-top: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style for detailed member documentation */
|
||||||
|
.memtemplate {
|
||||||
|
font-size: 80%;
|
||||||
|
color: #606060;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-left: 3px;
|
||||||
|
}
|
||||||
|
.memnav {
|
||||||
|
background-color: #e8eef2;
|
||||||
|
border: 1px solid #84b0c7;
|
||||||
|
text-align: center;
|
||||||
|
margin: 2px;
|
||||||
|
margin-right: 15px;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
.memitem {
|
||||||
|
padding: 4px;
|
||||||
|
background-color: #eef3f5;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #dedeee;
|
||||||
|
-moz-border-radius: 8px 8px 8px 8px;
|
||||||
|
}
|
||||||
|
.memname {
|
||||||
|
white-space: nowrap;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.memdoc{
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
.memproto {
|
||||||
|
background-color: #d5e1e8;
|
||||||
|
width: 100%;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #84b0c7;
|
||||||
|
font-weight: bold;
|
||||||
|
-moz-border-radius: 8px 8px 8px 8px;
|
||||||
|
}
|
||||||
|
.paramkey {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.paramtype {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.paramname {
|
||||||
|
color: #602020;
|
||||||
|
font-style: italic;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
/* End Styling for detailed member documentation */
|
||||||
|
|
||||||
|
/* for the tree view */
|
||||||
|
.ftvtree {
|
||||||
|
font-family: sans-serif;
|
||||||
|
margin:0.5em;
|
||||||
|
}
|
||||||
|
.directory { font-size: 9pt; font-weight: bold; }
|
||||||
|
.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
|
||||||
|
.directory > h3 { margin-top: 0; }
|
||||||
|
.directory p { margin: 0px; white-space: nowrap; }
|
||||||
|
.directory div { display: none; margin: 0px; }
|
||||||
|
.directory img { vertical-align: -30%; }
|
@ -0,0 +1,109 @@
|
|||||||
|
<h2><a href="namespaces.html">Namespaces</a></h2>
|
||||||
|
|
||||||
|
<p>The <a href="index.html">Exiv2 library</a> is made up of all
|
||||||
|
elements defined in the <a href="namespaceExiv2.html">Exiv2
|
||||||
|
namespace</a>.</p>
|
||||||
|
|
||||||
|
<h2><a href="classes.html">Classes</a></h2>
|
||||||
|
|
||||||
|
<p>The top-level class of the Exiv2 library is <a class="el"
|
||||||
|
href="classExiv2_1_1Image.html">Exiv2::Image</a>. Exiv2::Image
|
||||||
|
defines the interface to access image metadata. Derived from
|
||||||
|
Exiv2::Image are implementations for different image formats. Most
|
||||||
|
importantly, they contain the logic to read metadata from the image
|
||||||
|
into Exiv2 metadata containers and write it back to the image.
|
||||||
|
Most applications will use
|
||||||
|
<a class="el" href="classExiv2_1_1ImageFactory.html">Exiv2::ImageFactory</a>
|
||||||
|
to access images in files or memory, in which case the image format
|
||||||
|
is transparent to them. The factory determines the image format from the
|
||||||
|
data (not the file extension) and creates an object of the corresponding
|
||||||
|
Image subclass.</p>
|
||||||
|
|
||||||
|
<p>Exif and IPTC metadata is manipulated through the classes
|
||||||
|
<a class="el" href="classExiv2_1_1ExifData.html">Exiv2::ExifData</a>
|
||||||
|
and <a class="el" href="classExiv2_1_1IptcData.html">Exiv2::IptcData</a>.
|
||||||
|
They hold a container of Exif and IPTC metadata, respectively, and define
|
||||||
|
related methods to access and manipulate the metadata.
|
||||||
|
<br>
|
||||||
|
Exif tag and IPTC dataset reference information for the standard tags
|
||||||
|
and datasets is available in the two static classes
|
||||||
|
<a class="el" href="classExiv2_1_1ExifTags.html">Exiv2::ExifTags</a> and
|
||||||
|
<a class="el" href="classExiv2_1_1IptcDataSets.html">Exiv2::IptcDataSets</a>.
|
||||||
|
<br>
|
||||||
|
The metadata containers hold objects derived from
|
||||||
|
<a class="el" href="classExiv2_1_1Metadatum.html">Exiv2::Metadatum</a>.
|
||||||
|
Interface class Exiv2::Metadatum defines methods to access the
|
||||||
|
information of one metadatum. It models the tag data as a key and
|
||||||
|
value pair.
|
||||||
|
The abstract base class
|
||||||
|
<a class="el" href="classExiv2_1_1Key.html">Exiv2::Key</a> defines the
|
||||||
|
interface for a key. Concrete keys implement Exif and IPTC keys.
|
||||||
|
The abstract base class
|
||||||
|
<a class="el" href="classExiv2_1_1Value.html">Exiv2::Value</a> defines
|
||||||
|
the interface to access tag information, from which concrete values are
|
||||||
|
derived. The actual value used in a metadatum depends on the type of
|
||||||
|
the Exif tag or IPTC dataset. It is usually determined when the Exif or
|
||||||
|
IPTC metadata is read from an image. It is also possible to manually create
|
||||||
|
a Value and together with a key add it to an ExifData or IptcData
|
||||||
|
container.</p>
|
||||||
|
|
||||||
|
The classes to access XMP metadata are
|
||||||
|
<a class="el" href="classExiv2_1_1XmpData.html">Exiv2::XmpData</a>,
|
||||||
|
<a class="el" href="classExiv2_1_1Xmpdatum.html">Exiv2::Xmpdatum</a>
|
||||||
|
and <a class="el" href="classExiv2_1_1XmpKey.html">Exiv2::XmpKey</a>.
|
||||||
|
They work similar to the corresponding Exif and IPTC classes.
|
||||||
|
The property reference information is in
|
||||||
|
<a class="el" href="classExiv2_1_1XmpProperties.html">Exiv2::XmpProperties</a>.
|
||||||
|
In addition to the expected new members, class
|
||||||
|
<a class="el" href="classExiv2_1_1Image.html">Exiv2::Image</a>
|
||||||
|
now also has an interface to access the raw XMP packet.
|
||||||
|
<br>
|
||||||
|
All XMP value types are supported: Simple types, structures,
|
||||||
|
arrays, property qualifiers and language alternatives.
|
||||||
|
<br>
|
||||||
|
XMP properties are accessed through keys of the form
|
||||||
|
"Xmp.<Prefix>.<PropertyPath>", where <Prefix> is the preferred
|
||||||
|
(or rather, registered) prefix for a schema namespace and
|
||||||
|
<PropertyPath> is the path of the XMP node. In its most basic
|
||||||
|
form, to address simple properties, <PropertyPath> is the name
|
||||||
|
of the property. In general, <PropertyPath> can be used to
|
||||||
|
address any XMP node, including array items, structure fields
|
||||||
|
qualifiers and deeply nested properties.
|
||||||
|
<br>
|
||||||
|
Any properties in known namespaces are supported and additional
|
||||||
|
namespaces can be registered.
|
||||||
|
<br>
|
||||||
|
The specialized Exiv2 values
|
||||||
|
<a class="el" href="classExiv2_1_1XmpTextValue.html">Exiv2::XmpTextValue</a>,
|
||||||
|
<a class="el" href="classExiv2_1_1XmpArrayValue.html">Exiv2::XmpArrayValue</a>
|
||||||
|
and <a class="el" href="classExiv2_1_1LangAltValue.html">Exiv2::LangAltValue</a> are
|
||||||
|
provided to simplify the use of XMP properties.
|
||||||
|
<br>
|
||||||
|
Note: Unlike Exif and IPTC tags, XMP properties do not have
|
||||||
|
a tag number.
|
||||||
|
|
||||||
|
<h2><a href="examples.html">Examples</a></h2>
|
||||||
|
|
||||||
|
<p>There are several simple examples that demonstrate the basic use of Exiv2
|
||||||
|
functionality: <a href="exifprint_8cpp-example.html">Exifprint</a>
|
||||||
|
shows how the Exif data of an image can be read and written to the screen.
|
||||||
|
<a href="iptcprint_8cpp-example.html">Iptcprint</a> is a similar
|
||||||
|
example to print IPTC data.
|
||||||
|
<a href="addmoddel_8cpp-example.html">Addmoddel</a> shows how to
|
||||||
|
add, modify and delete Exif metadata.
|
||||||
|
<a href="exifcomment_8cpp-example.html">Exifcomment</a> shows how to
|
||||||
|
set the exif comment of an image.
|
||||||
|
<a href="xmpsample_8cpp-example.html">Xmpsample.cpp</a> contains examples
|
||||||
|
of how to set various types of XMP properties.
|
||||||
|
<br>
|
||||||
|
For more real-world code have a look at the implementation of the
|
||||||
|
different actions of the Exiv2 utility (actions.cpp).</p>
|
||||||
|
|
||||||
|
<h2><a href="../makernote.html">Makernotes</a></h2>
|
||||||
|
|
||||||
|
<p>Exif Makernote data can be accessed through ExifData in the same
|
||||||
|
way as the standard Exif tags. In other words, for each entry of a
|
||||||
|
known Makernote, there is a corresponding Metadatum in the ExifData
|
||||||
|
container. Makernote taglists are available in classes
|
||||||
|
Exiv2::<Make>MakerNote (e.g.,
|
||||||
|
<a class="el" href="classExiv2_1_1CanonMakerNote.html">Exiv2::CanonMakerNote</a>.)
|
@ -0,0 +1,32 @@
|
|||||||
|
// ***************************************************************** -*- C++ -*-
|
||||||
|
/*!
|
||||||
|
@mainpage Image metadata library and tools
|
||||||
|
|
||||||
|
<h2>%Exiv2 v__version__ API documentation</h2>
|
||||||
|
|
||||||
|
@htmlinclude intro.html
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
@example addmoddel.cpp
|
||||||
|
Sample usage of high-level metadata operations.
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
@example exifprint.cpp
|
||||||
|
Sample program to print Exif data from an image.
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
@example exifcomment.cpp
|
||||||
|
Sample program showing how to set the Exif comment of an image.
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
@example iptcprint.cpp
|
||||||
|
Sample program to print the IPTC metadata of an image
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
@example iptceasy.cpp
|
||||||
|
The quickest way to access, set or modify IPTC metadata
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
@example xmpsample.cpp
|
||||||
|
Sample usage of high-level XMP classes.
|
||||||
|
*/
|
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 201 B |
After Width: | Height: | Size: 144 B |
@ -0,0 +1,221 @@
|
|||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* General */
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.oddcolor {
|
||||||
|
background-color: #f5f5f5
|
||||||
|
}
|
||||||
|
.evencolor {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* Content */
|
||||||
|
|
||||||
|
#content a[href^="http://"]:after {
|
||||||
|
content: " " url("external_link.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
#content a[href$=".pdf"]:after {
|
||||||
|
content: " " url("pdf_file.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
#content a[href$=".PDF"]:after {
|
||||||
|
content: " " url("pdf_file.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* Sidebar */
|
||||||
|
#sidebar {
|
||||||
|
font-family: Verdana,Sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
#sidebar h2 {
|
||||||
|
font-size: 18px;
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding: 5px 10px 5px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav {
|
||||||
|
margin: 1em 0 1em 0;
|
||||||
|
padding: 0 5px 0 5px;
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
#nav li {
|
||||||
|
list-style: none;
|
||||||
|
background-image: none;
|
||||||
|
padding: 0 0 1px 0;
|
||||||
|
line-height: 1.0;
|
||||||
|
}
|
||||||
|
#nav li :link, #nav li :visited {
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: 1.0;
|
||||||
|
color: #13264d;
|
||||||
|
display: block;
|
||||||
|
text-decoration: none;
|
||||||
|
border: solid 1px #eeeeee;
|
||||||
|
padding: 5px 10px 5px 10px;
|
||||||
|
}
|
||||||
|
#nav li :link:hover, #nav li :visited:hover {
|
||||||
|
color: #0a7ddb;
|
||||||
|
border: solid 1px #dddddd;
|
||||||
|
border-style: dotted;
|
||||||
|
background-color: #ffffd0;
|
||||||
|
}
|
||||||
|
#nav li :link:active, #nav li :visited:active {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav ul {
|
||||||
|
margin: 1px 1px 0 1px;
|
||||||
|
padding: 0 0 1px 0;
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
border: solid 1px #ffffff;
|
||||||
|
}
|
||||||
|
#nav ul :link, #nav ul :visited {
|
||||||
|
padding: 5px 5px 5px 1.5em;
|
||||||
|
border: solid 1px #f8f8f8;
|
||||||
|
}
|
||||||
|
#nav ul :link:hover, #nav ul :visited:hover {
|
||||||
|
background-image: none;
|
||||||
|
border: solid 1px #f8f8f8;
|
||||||
|
background-color: #ffffd0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* What's new */
|
||||||
|
#latest h2 {
|
||||||
|
color: #ec361d;
|
||||||
|
}
|
||||||
|
|
||||||
|
#news {
|
||||||
|
margin: 0 5px 1em 5px;
|
||||||
|
padding: 2px 2px 0 2px;
|
||||||
|
line-height: 1;
|
||||||
|
font-size: 80%;
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
border: solid 1px #ffffff;
|
||||||
|
}
|
||||||
|
#news li {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0 0 0.5em 0;
|
||||||
|
}
|
||||||
|
#news :link, #news :visited {
|
||||||
|
color: #13264d;
|
||||||
|
display: block;
|
||||||
|
border: solid 1px #f8f8f8;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 2px 2px 2px 2px;
|
||||||
|
}
|
||||||
|
#news :link:hover, #news :visited:hover {
|
||||||
|
color: #ec361d;
|
||||||
|
border: solid 1px #ec361d;
|
||||||
|
background-color: #ffffd0;
|
||||||
|
}
|
||||||
|
#news :link:active, #news :visited:active {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.newstitle {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.newsabstract {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* Ohloh widgets */
|
||||||
|
#ohloh_thin_badge {
|
||||||
|
margin-top: 2em;
|
||||||
|
margin-left: 25px;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
}
|
||||||
|
#ohloh_factoids {
|
||||||
|
margin-left: 10px;
|
||||||
|
margin-right: 20px;
|
||||||
|
border: solid 1px #bbbbbb;
|
||||||
|
border-style: dotted;
|
||||||
|
}
|
||||||
|
#ohloh_factoids a[href^="http://"]:after {
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* Firefox banners */
|
||||||
|
#firefox {
|
||||||
|
margin-top: 1.5em;
|
||||||
|
margin-left: 15px;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* Validator */
|
||||||
|
#validator {
|
||||||
|
margin-top: 1.5em;
|
||||||
|
margin-left: 35px;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* doxygen */
|
||||||
|
#doxygen {
|
||||||
|
margin-top: 2em;
|
||||||
|
margin-left: 25px;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* Content */
|
||||||
|
#content {
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
left: 150px;
|
||||||
|
padding: 20px 30px 0 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* Footer */
|
||||||
|
#footer table {
|
||||||
|
border-top: solid 1px #EEEAE4;
|
||||||
|
margin-top: 1.5em;
|
||||||
|
padding-top: 10px;
|
||||||
|
font-size: 73%;
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
/* Examples (Code) */
|
||||||
|
PRE.fragment {
|
||||||
|
border: 1px solid #CCCCCC;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
margin-top: 4px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: 8px;
|
||||||
|
padding-left: 6px;
|
||||||
|
padding-right: 6px;
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 4px;
|
||||||
|
}
|
||||||
|
DIV.fragment {
|
||||||
|
border: 1px solid #CCCCCC;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 6px;
|
||||||
|
}
|
||||||
|
SPAN.keyword { color: #008000 }
|
||||||
|
SPAN.keywordtype { color: #604020 }
|
||||||
|
SPAN.keywordflow { color: #e08000 }
|
||||||
|
SPAN.comment { color: #800000 }
|
||||||
|
SPAN.preprocessor { color: #806020 }
|
||||||
|
SPAN.stringliteral { color: #002080 }
|
||||||
|
SPAN.charliteral { color: #008080 }
|
After Width: | Height: | Size: 201 B |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 240 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 233 B |
@ -0,0 +1,92 @@
|
|||||||
|
/* -----------------------------------------------
|
||||||
|
http://www.whatcounter.com
|
||||||
|
webmaster@whatcounter.com
|
||||||
|
|
||||||
|
- v.2.2.5
|
||||||
|
powered by
|
||||||
|
(c) 2000-2003 www.phpee.com
|
||||||
|
|
||||||
|
------------------------------------------------ */
|
||||||
|
|
||||||
|
// ----------------------------------------------------------
|
||||||
|
// SETTINGS:
|
||||||
|
// here should be your username you received from w1.whatcounter.com
|
||||||
|
// Do not edit this file manually!! Use the one you got in your
|
||||||
|
// confirmation-email or the one from Whatcounter's settings
|
||||||
|
// section.
|
||||||
|
id = "exiv2";
|
||||||
|
// If you're using a frameset and are not getting correct
|
||||||
|
// referrers, please uncomment the following line:
|
||||||
|
// pp_frames = true;
|
||||||
|
// ----------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// define some defaults -------------------------------------
|
||||||
|
if(showme==null) var showme='n';
|
||||||
|
if(st==null) var st='js'; // st means show-type
|
||||||
|
|
||||||
|
|
||||||
|
// get the user agent name ----------------------------------
|
||||||
|
v = navigator.appName;
|
||||||
|
|
||||||
|
// get the screen resolution --------------------------------
|
||||||
|
c=0;
|
||||||
|
if (v != "Netscape") c = screen.colorDepth;
|
||||||
|
else c = screen.pixelDepth;
|
||||||
|
|
||||||
|
// get the screen size --------------------------------------
|
||||||
|
s = screen.width+"x"+screen.height;
|
||||||
|
|
||||||
|
// get the document's title ---------------------------------
|
||||||
|
t = escape(document.title);
|
||||||
|
|
||||||
|
// get the document's referrer -------------------------------
|
||||||
|
var f = "";
|
||||||
|
|
||||||
|
// if pp_frames is true then try getting the framed referral (without error checking)
|
||||||
|
if (typeof(pp_frames) != "undefined")
|
||||||
|
if (pp_frames)
|
||||||
|
f = top.document.referrer;
|
||||||
|
|
||||||
|
// get the referral for non-multi-domained-framed sites using a Netscape browser
|
||||||
|
if ((f == "") || (f == "[unknown origin]") || (f == "unknown") || (f == "undefined"))
|
||||||
|
if (document["parent"] != null)
|
||||||
|
if (parent["document"] != null) // ACCESS ERROR HERE!
|
||||||
|
if (parent.document["referrer"] != null)
|
||||||
|
if (typeof(parent.document) == "object")
|
||||||
|
f = parent.document.referrer;
|
||||||
|
|
||||||
|
// get the referral for the current document if a framed referral wasn't found
|
||||||
|
if ((f == "") || (f == "[unknown origin]") || (f == "unknown") || (f == "undefined"))
|
||||||
|
if (document["referrer"] != null)
|
||||||
|
f = document.referrer;
|
||||||
|
|
||||||
|
// convert all the unknown's into blank
|
||||||
|
if ((f == "") || (f == "[unknown origin]") || (f == "unknown") || (f == "undefined"))
|
||||||
|
f = "";
|
||||||
|
|
||||||
|
// escape the referral
|
||||||
|
f = escape(f);
|
||||||
|
|
||||||
|
// getting data ready to send -------------------------------
|
||||||
|
r="?id="+id+"&referer="+f+"&r="+s+"&c="+c+"&showme="+showme+"&st="+st+"&title="+t;
|
||||||
|
|
||||||
|
// adding logid if called by st='phpjs'
|
||||||
|
if(jslogid==null) var jslogid = 0;
|
||||||
|
else r = r + "&jslogid="+jslogid;
|
||||||
|
|
||||||
|
|
||||||
|
if (st=='js') { // calling PowerPhlogger by JavaScript-tag
|
||||||
|
if (v != "Microsoft Internet Explorer") {
|
||||||
|
r = r+"&url="+document.URL; // $HTTP_REFERER problem with NS,...
|
||||||
|
}
|
||||||
|
document.open();
|
||||||
|
document.write("<script language=\"JavaScript\" type=\"text/javascript\" src=\"http://w1.whatcounter.com/pphlogger.php"+r+"\"></script>");
|
||||||
|
document.close();
|
||||||
|
} else { // calling PowerPhlogger by IMG-tag
|
||||||
|
rand = Math.round(1000*Math.random());
|
||||||
|
r = r+"&b="+rand; //force the page to load the IMG
|
||||||
|
document.open();
|
||||||
|
document.write("<img src=\"http://w1.whatcounter.com/pphlogger.php"+r+"\" alt=\"\" border=\"0\">");
|
||||||
|
document.close();
|
||||||
|
}
|
After Width: | Height: | Size: 2.8 KiB |
@ -0,0 +1,90 @@
|
|||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
.BoxTable {
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.BoxTable>td {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
.ParamTable {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ParamTable td.Desc {
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
.ReportTable {
|
||||||
|
font: Icon;
|
||||||
|
width: 100%;
|
||||||
|
border: 1px Solid ThreeDShadow;
|
||||||
|
background: Window;
|
||||||
|
color: WindowText;
|
||||||
|
border-spacing: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ReportTable thead {
|
||||||
|
background: ButtonFace;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ReportTable th {
|
||||||
|
border: 1px solid;
|
||||||
|
border-color: ButtonHighlight ButtonShadow
|
||||||
|
ButtonShadow ButtonHighlight;
|
||||||
|
cursor: default;
|
||||||
|
text-align: center;
|
||||||
|
padding: 1px 1px 1px 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ReportTable th:active {
|
||||||
|
border-color: ButtonShadow ButtonHighlight
|
||||||
|
ButtonHighlight ButtonShadow;
|
||||||
|
padding: 1px 1px 1px 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ReportTable tbody tr.OddRow {
|
||||||
|
background: #FFFFFF
|
||||||
|
}
|
||||||
|
|
||||||
|
.ReportTable tbody tr.EvenRow {
|
||||||
|
background: #CCDBEA
|
||||||
|
}
|
||||||
|
|
||||||
|
.ReportTable tfoot {
|
||||||
|
background: #FFFFFF;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ReportTable tfoot tr {
|
||||||
|
border: 1px Solid ThreeDShadow;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ReportTable>td {
|
||||||
|
padding: 2px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ReportTable td.Total {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
.SortArrow {
|
||||||
|
width: 11px;
|
||||||
|
height: 11px;
|
||||||
|
background-position: center center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
margin: 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.SortArrow.descending {
|
||||||
|
background-image: url("descending.png"); /* relative to this css file */
|
||||||
|
}
|
||||||
|
|
||||||
|
.SortArrow.ascending {
|
||||||
|
background-image: url("ascending.png"); /* relative to this css file */
|
||||||
|
}
|
@ -0,0 +1,356 @@
|
|||||||
|
/*----------------------------------------------------------------------------\
|
||||||
|
| Sortable Table 1.03 |
|
||||||
|
|-----------------------------------------------------------------------------|
|
||||||
|
| Created by Erik Arvidsson |
|
||||||
|
| (http://webfx.eae.net/contact.html#erik) |
|
||||||
|
| For WebFX (http://webfx.eae.net/) |
|
||||||
|
|-----------------------------------------------------------------------------|
|
||||||
|
| A DOM 1 based script that allows an ordinary HTML table to be sortable. |
|
||||||
|
|-----------------------------------------------------------------------------|
|
||||||
|
| Copyright (c) 1998 - 2002 Erik Arvidsson |
|
||||||
|
|-----------------------------------------------------------------------------|
|
||||||
|
| This software is provided "as is", without warranty of any kind, express or |
|
||||||
|
| implied, including but not limited to the warranties of merchantability, |
|
||||||
|
| fitness for a particular purpose and noninfringement. In no event shall the |
|
||||||
|
| authors or copyright holders be liable for any claim, damages or other |
|
||||||
|
| liability, whether in an action of contract, tort or otherwise, arising |
|
||||||
|
| from, out of or in connection with the software or the use or other |
|
||||||
|
| dealings in the software. |
|
||||||
|
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|
||||||
|
| This software is available under the three different licenses mentioned |
|
||||||
|
| below. To use this software you must chose, and qualify, for one of those. |
|
||||||
|
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|
||||||
|
| The WebFX Non-Commercial License http://webfx.eae.net/license.html |
|
||||||
|
| Permits anyone the right to use the software in a non-commercial context |
|
||||||
|
| free of charge. |
|
||||||
|
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|
||||||
|
| The WebFX Commercial license http://webfx.eae.net/commercial.html |
|
||||||
|
| Permits the license holder the right to use the software in a commercial |
|
||||||
|
| context. Such license must be specifically obtained, however it's valid for |
|
||||||
|
| any number of implementations of the licensed software. |
|
||||||
|
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|
||||||
|
| GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt |
|
||||||
|
| Permits anyone the right to use and modify the software without limitations |
|
||||||
|
| as long as proper credits are given and the original and modified source |
|
||||||
|
| code are included. Requires that the final product, software derivate from |
|
||||||
|
| the original source or any software utilizing a GPL component, such as |
|
||||||
|
| this, is also licensed under the GPL license. |
|
||||||
|
|-----------------------------------------------------------------------------|
|
||||||
|
| 2003-01-10 | First version |
|
||||||
|
| 2003-01-19 | Minor changes to the date parsing |
|
||||||
|
| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator) |
|
||||||
|
| 2003-02-01 | Sloppy typo like error fixed in getInnerText |
|
||||||
|
|-----------------------------------------------------------------------------|
|
||||||
|
| Created 2003-01-10 | All changes are in the log above. | Updated 2003-02-01 |
|
||||||
|
\----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Changes made (ahu):
|
||||||
|
+ Support header TH element (headerOnclick)
|
||||||
|
+ Added support for a TD attribute 'sortValue' (getRowValue):
|
||||||
|
If it is there, use its value for sorting instead of the cell content.
|
||||||
|
This allows sorting by a value that differs from what is seen on the
|
||||||
|
screen. As a simple example, consider sorting a column containing
|
||||||
|
formatted numbers: <TD sortValue="1000">1,000.00</TD>
|
||||||
|
|
||||||
|
+ 15-May 2004, ahu: changed default sort order (on the first click) to
|
||||||
|
ascending (SortableTable.prototype.sort)
|
||||||
|
|
||||||
|
ToDo:
|
||||||
|
- Allow for different Date formats
|
||||||
|
*/
|
||||||
|
|
||||||
|
function SortableTable(oTable, oSortTypes) {
|
||||||
|
|
||||||
|
this.element = oTable;
|
||||||
|
this.tHead = oTable.tHead;
|
||||||
|
this.tBody = oTable.tBodies[0];
|
||||||
|
this.document = oTable.ownerDocument || oTable.document;
|
||||||
|
|
||||||
|
this.sortColumn = null;
|
||||||
|
this.descending = null;
|
||||||
|
|
||||||
|
var oThis = this;
|
||||||
|
this._headerOnclick = function (e) {
|
||||||
|
oThis.headerOnclick(e);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// only IE needs this
|
||||||
|
var win = this.document.defaultView || this.document.parentWindow;
|
||||||
|
this._onunload = function () {
|
||||||
|
oThis.destroy();
|
||||||
|
};
|
||||||
|
if (win && typeof win.attachEvent != "undefined") {
|
||||||
|
win.attachEvent("onunload", this._onunload);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.initHeader(oSortTypes || []);
|
||||||
|
}
|
||||||
|
|
||||||
|
SortableTable.gecko = navigator.product == "Gecko";
|
||||||
|
SortableTable.msie = /msie/i.test(navigator.userAgent);
|
||||||
|
// Mozilla is faster when doing the DOM manipulations on
|
||||||
|
// an orphaned element. MSIE is not
|
||||||
|
SortableTable.removeBeforeSort = SortableTable.gecko;
|
||||||
|
|
||||||
|
SortableTable.prototype.onsort = function () {};
|
||||||
|
|
||||||
|
// adds arrow containers and events
|
||||||
|
// also binds sort type to the header cells so that reordering columns does
|
||||||
|
// not break the sort types
|
||||||
|
SortableTable.prototype.initHeader = function (oSortTypes) {
|
||||||
|
var cells = this.tHead.rows[0].cells;
|
||||||
|
var l = cells.length;
|
||||||
|
var img, c;
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
c = cells[i];
|
||||||
|
img = this.document.createElement("IMG");
|
||||||
|
img.src = "include/blank.png"; // relative to the file that uses this
|
||||||
|
c.appendChild(img);
|
||||||
|
if (oSortTypes[i] != null) {
|
||||||
|
c._sortType = oSortTypes[i];
|
||||||
|
}
|
||||||
|
if (typeof c.addEventListener != "undefined")
|
||||||
|
c.addEventListener("click", this._headerOnclick, false);
|
||||||
|
else if (typeof c.attachEvent != "undefined")
|
||||||
|
c.attachEvent("onclick", this._headerOnclick);
|
||||||
|
}
|
||||||
|
this.updateHeaderArrows();
|
||||||
|
};
|
||||||
|
|
||||||
|
// remove arrows and events
|
||||||
|
SortableTable.prototype.uninitHeader = function () {
|
||||||
|
var cells = this.tHead.rows[0].cells;
|
||||||
|
var l = cells.length;
|
||||||
|
var c;
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
c = cells[i];
|
||||||
|
c.removeChild(c.lastChild);
|
||||||
|
if (typeof c.removeEventListener != "undefined")
|
||||||
|
c.removeEventListener("click", this._headerOnclick, false);
|
||||||
|
else if (typeof c.detachEvent != "undefined")
|
||||||
|
c.detachEvent("onclick", this._headerOnclick);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SortableTable.prototype.updateHeaderArrows = function () {
|
||||||
|
var cells = this.tHead.rows[0].cells;
|
||||||
|
var l = cells.length;
|
||||||
|
var img;
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
img = cells[i].lastChild;
|
||||||
|
if (i == this.sortColumn)
|
||||||
|
img.className = "SortArrow " + (this.descending ? "descending" : "ascending");
|
||||||
|
else
|
||||||
|
img.className = "SortArrow";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SortableTable.prototype.headerOnclick = function (e) {
|
||||||
|
// find TD or TH element
|
||||||
|
var el = e.target || e.srcElement;
|
||||||
|
while (el.tagName != "TD" && el.tagName != "TH")
|
||||||
|
el = el.parentNode;
|
||||||
|
|
||||||
|
this.sort(el.cellIndex);
|
||||||
|
};
|
||||||
|
|
||||||
|
SortableTable.prototype.getSortType = function (nColumn) {
|
||||||
|
var cell = this.tHead.rows[0].cells[nColumn];
|
||||||
|
var val = cell._sortType;
|
||||||
|
if (val != "")
|
||||||
|
return val;
|
||||||
|
return "String";
|
||||||
|
};
|
||||||
|
|
||||||
|
// only nColumn is required
|
||||||
|
// if bDescending is left out the old value is taken into account
|
||||||
|
// if sSortType is left out the sort type is found from the sortTypes array
|
||||||
|
|
||||||
|
SortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {
|
||||||
|
if (sSortType == null)
|
||||||
|
sSortType = this.getSortType(nColumn);
|
||||||
|
|
||||||
|
// exit if None
|
||||||
|
if (sSortType == "None")
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (bDescending == null) {
|
||||||
|
if (this.sortColumn != nColumn)
|
||||||
|
// 15-May 2004, ahu: change to false for ascending
|
||||||
|
this.descending = false;
|
||||||
|
else
|
||||||
|
this.descending = !this.descending;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.sortColumn = nColumn;
|
||||||
|
|
||||||
|
if (typeof this.onbeforesort == "function")
|
||||||
|
this.onbeforesort();
|
||||||
|
|
||||||
|
var f = this.getSortFunction(sSortType, nColumn);
|
||||||
|
var a = this.getCache(sSortType, nColumn);
|
||||||
|
var tBody = this.tBody;
|
||||||
|
|
||||||
|
a.sort(f);
|
||||||
|
|
||||||
|
if (this.descending)
|
||||||
|
a.reverse();
|
||||||
|
|
||||||
|
if (SortableTable.removeBeforeSort) {
|
||||||
|
// remove from doc
|
||||||
|
var nextSibling = tBody.nextSibling;
|
||||||
|
var p = tBody.parentNode;
|
||||||
|
p.removeChild(tBody);
|
||||||
|
}
|
||||||
|
|
||||||
|
// insert in the new order
|
||||||
|
var l = a.length;
|
||||||
|
for (var i = 0; i < l; i++)
|
||||||
|
tBody.appendChild(a[i].element);
|
||||||
|
|
||||||
|
if (SortableTable.removeBeforeSort) {
|
||||||
|
// insert into doc
|
||||||
|
p.insertBefore(tBody, nextSibling);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.updateHeaderArrows();
|
||||||
|
|
||||||
|
this.destroyCache(a);
|
||||||
|
|
||||||
|
if (typeof this.onsort == "function")
|
||||||
|
this.onsort();
|
||||||
|
};
|
||||||
|
|
||||||
|
SortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {
|
||||||
|
var oThis = this;
|
||||||
|
this._asyncsort = function () {
|
||||||
|
oThis.sort(nColumn, bDescending, sSortType);
|
||||||
|
};
|
||||||
|
window.setTimeout(this._asyncsort, 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
SortableTable.prototype.getCache = function (sType, nColumn) {
|
||||||
|
var rows = this.tBody.rows;
|
||||||
|
var l = rows.length;
|
||||||
|
var a = new Array(l);
|
||||||
|
var r;
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
r = rows[i];
|
||||||
|
a[i] = {
|
||||||
|
value: this.getRowValue(r, sType, nColumn),
|
||||||
|
element: r
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return a;
|
||||||
|
};
|
||||||
|
|
||||||
|
SortableTable.prototype.destroyCache = function (oArray) {
|
||||||
|
var l = oArray.length;
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
oArray[i].value = null;
|
||||||
|
oArray[i].element = null;
|
||||||
|
oArray[i] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {
|
||||||
|
var c = oRow.cells[nColumn];
|
||||||
|
var s = c.getAttribute("sortValue");
|
||||||
|
if (!s) {
|
||||||
|
if (typeof c.innerText != "undefined")
|
||||||
|
s = c.innerText;
|
||||||
|
else
|
||||||
|
s = SortableTable.getInnerText(c);
|
||||||
|
}
|
||||||
|
return this.getValueFromString(s, sType);
|
||||||
|
};
|
||||||
|
|
||||||
|
SortableTable.getInnerText = function (oNode) {
|
||||||
|
var s = "";
|
||||||
|
var cs = oNode.childNodes;
|
||||||
|
var l = cs.length;
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
switch (cs[i].nodeType) {
|
||||||
|
case 1: //ELEMENT_NODE
|
||||||
|
s += SortableTable.getInnerText(cs[i]);
|
||||||
|
break;
|
||||||
|
case 3: //TEXT_NODE
|
||||||
|
s += cs[i].nodeValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
SortableTable.prototype.getValueFromString = function (sText, sType) {
|
||||||
|
switch (sType) {
|
||||||
|
case "Number":
|
||||||
|
return Number(sText);
|
||||||
|
case "CaseInsensitiveString":
|
||||||
|
return sText.toUpperCase();
|
||||||
|
case "Date":
|
||||||
|
var parts = sText.split("-");
|
||||||
|
var d = new Date(0);
|
||||||
|
d.setFullYear(parts[0]);
|
||||||
|
d.setDate(parts[2]);
|
||||||
|
d.setMonth(parts[1] - 1);
|
||||||
|
return d.valueOf();
|
||||||
|
}
|
||||||
|
return sText;
|
||||||
|
};
|
||||||
|
|
||||||
|
SortableTable.prototype.getSortFunction = function (sType, nColumn) {
|
||||||
|
return function compare(n1, n2) {
|
||||||
|
if (n1.value < n2.value)
|
||||||
|
return -1;
|
||||||
|
if (n2.value < n1.value)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
SortableTable.prototype.destroy = function () {
|
||||||
|
this.uninitHeader();
|
||||||
|
var win = this.document.parentWindow;
|
||||||
|
if (win && typeof win.detachEvent != "undefined") { // only IE needs this
|
||||||
|
win.detachEvent("onunload", this._onunload);
|
||||||
|
}
|
||||||
|
this._onunload = null;
|
||||||
|
this.element = null;
|
||||||
|
this.tHead = null;
|
||||||
|
this.tBody = null;
|
||||||
|
this.document = null;
|
||||||
|
this._headerOnclick = null;
|
||||||
|
this.sortTypes = null;
|
||||||
|
this._asyncsort = null;
|
||||||
|
this.onsort = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
function addClassName(el, sClassName) {
|
||||||
|
var s = el.className;
|
||||||
|
var p = s.split(" ");
|
||||||
|
var l = p.length;
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
if (p[i] == sClassName)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
p[p.length] = sClassName;
|
||||||
|
el.className = p.join(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeClassName(el, sClassName) {
|
||||||
|
var s = el.className;
|
||||||
|
var p = s.split(" ");
|
||||||
|
var np = [];
|
||||||
|
var l = p.length;
|
||||||
|
var j = 0;
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
if (p[i] != sClassName)
|
||||||
|
np[j++] = p[i];
|
||||||
|
}
|
||||||
|
el.className = np.join(" ");
|
||||||
|
}
|
After Width: | Height: | Size: 43 B |
After Width: | Height: | Size: 1.2 KiB |
@ -0,0 +1,503 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Archive</h2>
|
||||||
|
<p>These are all previously released versions of Exiv2. For the most current version, go to the <a title="Current version of Exiv2" href="download.html">download page</a>.</p>
|
||||||
|
|
||||||
|
<table class="ReportTable" id="report-1" cellspacing="0">
|
||||||
|
<colgroup>
|
||||||
|
<col>
|
||||||
|
<col>
|
||||||
|
<col align="center">
|
||||||
|
<col align="center">
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><b>Package</b></th>
|
||||||
|
<th><b>Filename</b></th>
|
||||||
|
<th><b>Size (Bytes)</b></th>
|
||||||
|
<th><b>Date</b></th>
|
||||||
|
<th><b>MD5</b></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.22 Source</td>
|
||||||
|
<td><a title="Download the v0.22 source package" href="exiv2-0.22.tar.gz" >exiv2-0.22.tar.gz</a></td>
|
||||||
|
<td>3482572</td>
|
||||||
|
<td>18-Sep-2011</td>
|
||||||
|
<td>84d7d5b1802529efca8ac3d6e6a97e3a</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.22 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.22 Windows executable" href="exiv2-0.22-win.zip" >exiv2-0.22-win.zip</a></td>
|
||||||
|
<td>1677934</td>
|
||||||
|
<td>18-Sep-2011</td>
|
||||||
|
<td>20f918dce2504a3a59df2de24f785c64</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.21.1 Source</td>
|
||||||
|
<td><a title="Download the v0.21.1 source package" href="exiv2-0.21.1.tar.gz" >exiv2-0.21.1.tar.gz</a></td>
|
||||||
|
<td>3004521</td>
|
||||||
|
<td>14-Feb-2011</td>
|
||||||
|
<td>5c99bbcaa998f6b200b92f2bf0ac4f9e</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.21.1 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.21.1 Windows executable" href="exiv2-0.21.1-win.zip" >exiv2-0.21.1-win.zip</a></td>
|
||||||
|
<td>1640376</td>
|
||||||
|
<td>14-Feb-2011</td>
|
||||||
|
<td>ddfdd3be4e3a64d9a6571ee7a873eeda</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.21 Source</td>
|
||||||
|
<td><a title="Download the v0.21 source package" href="exiv2-0.21.tar.gz" >exiv2-0.21.tar.gz</a></td>
|
||||||
|
<td>3002066</td>
|
||||||
|
<td>01-Dec-2010</td>
|
||||||
|
<td>2caf74de59b5424996959ccea1c001fb</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.21 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.21 Windows executable" href="exiv2-0.21-win.zip" >exiv2-0.21-win.zip</a></td>
|
||||||
|
<td>1639929</td>
|
||||||
|
<td>01-Dec-2010</td>
|
||||||
|
<td>6a9fc0b4cef4dbbc7820bb24791ec2d3</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.20 Source</td>
|
||||||
|
<td><a title="Download the v0.20 source package" href="exiv2-0.20.tar.gz" >exiv2-0.20.tar.gz</a></td>
|
||||||
|
<td>2941045</td>
|
||||||
|
<td>30-May-2010</td>
|
||||||
|
<td>3173d08a4313dc94b7bd1b7cdbda2093</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.20 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.20 Windows executable" href="exiv2-0.20-win.zip" >exiv2-0.20-win.zip</a></td>
|
||||||
|
<td>1604291</td>
|
||||||
|
<td>30-May-2010</td>
|
||||||
|
<td>9c572b6c50d8c484a0d61dd7f2385966</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.19 Source</td>
|
||||||
|
<td><a title="Download the v0.19 source package" href="exiv2-0.19.tar.gz" >exiv2-0.19.tar.gz</a></td>
|
||||||
|
<td>2658781</td>
|
||||||
|
<td>30-Dec-2009</td>
|
||||||
|
<td>f52fb75a2cb7512f1484deab76473e13</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.19 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.19 Windows executable" href="exiv2-0.19-win.zip" >exiv2-0.19-win.zip</a></td>
|
||||||
|
<td>1637143</td>
|
||||||
|
<td>30-Dec-2009</td>
|
||||||
|
<td>ea6f54ab7cfbfc4fdc68e2332e0e15af</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.18.2 Source</td>
|
||||||
|
<td><a title="Download the v0.18.2 source package" href="exiv2-0.18.2.tar.gz" >exiv2-0.18.2.tar.gz</a></td>
|
||||||
|
<td>2394263</td>
|
||||||
|
<td>24-Jun-2009</td>
|
||||||
|
<td>300cc55e098d7ff7560b4c6992282c53</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.18.2 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.18.2 Windows executable" href="exiv2-0.18.2-win.zip" >exiv2-0.18.2-win.zip</a></td>
|
||||||
|
<td>1773751</td>
|
||||||
|
<td>24-Jun-2009</td>
|
||||||
|
<td>566dc35c684d79d0b4083f2122cae65e</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.18.1 Source</td>
|
||||||
|
<td><a title="Download the v0.18.1 source package" href="exiv2-0.18.1.tar.gz" >exiv2-0.18.1.tar.gz</a></td>
|
||||||
|
<td>2342158</td>
|
||||||
|
<td>06-Apr-2009</td>
|
||||||
|
<td>744f06b3a2beeb2341f30b157cbd8e7e</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.18.1 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.18.1 Windows executable" href="exiv2-0.18.1-win.zip" >exiv2-0.18.1-win.zip</a></td>
|
||||||
|
<td>1767271</td>
|
||||||
|
<td>06-Apr-2009</td>
|
||||||
|
<td>c7591a7aed7f3bee68a6372511e32521</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.18 Source</td>
|
||||||
|
<td><a title="Download the v0.18 source package" href="exiv2-0.18.tar.gz" >exiv2-0.18.tar.gz</a></td>
|
||||||
|
<td>2299215</td>
|
||||||
|
<td>18-Dec-2008</td>
|
||||||
|
<td>03044792525ae0a1b109df5a53b858fb</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.18 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.18 Windows executable" href="exiv2-0.18-win.zip" >exiv2-0.18-win.zip</a></td>
|
||||||
|
<td>1602335</td>
|
||||||
|
<td>18-Dec-2008</td>
|
||||||
|
<td>3f782e5c340a54a23309e120d00c5e88</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.18-pre2 Source</td>
|
||||||
|
<td><a title="Download the v0.18-pre2 source package" href="exiv2-0.18-pre2.tar.gz" >exiv2-0.18-pre2.tar.gz</a></td>
|
||||||
|
<td>2198231</td>
|
||||||
|
<td>04-Nov-2008</td>
|
||||||
|
<td>7b52cebd0af071fe663a4a06e64d47cd</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.18-pre2 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.18-pre2 Windows executable" href="exiv2-0.18-pre2-win.zip" >exiv2-0.18-pre2-win.zip</a></td>
|
||||||
|
<td>1574233</td>
|
||||||
|
<td>04-Nov-2008</td>
|
||||||
|
<td>e007e0a988fb5508605c5f0eb4930d7c</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.18-pre1 Source</td>
|
||||||
|
<td><a title="Download the v0.18-pre1 source package" href="exiv2-0.18-pre1.tar.gz" >exiv2-0.18-pre1.tar.gz</a></td>
|
||||||
|
<td>1838552</td>
|
||||||
|
<td>11-Sep-2008</td>
|
||||||
|
<td>63b4bbcfe5a1c02187c795b8a67b8112</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.18-pre1 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.18-pre1 Windows executable" href="exiv2-0.18-pre1-win.zip" >exiv2-0.18-pre1-win.zip</a></td>
|
||||||
|
<td>1553504</td>
|
||||||
|
<td>11-Sep-2008</td>
|
||||||
|
<td>1b64f0ce990ba99fbd06f90126b4995a</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.17.1 Source</td>
|
||||||
|
<td><a title="Download the v0.17.1 source package" href="exiv2-0.17.1.tar.gz" >exiv2-0.17.1.tar.gz</a></td>
|
||||||
|
<td>1807220</td>
|
||||||
|
<td>19-Jun-2008</td>
|
||||||
|
<td>52a602f4f0d9e89b7084ac795b7547ac</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.17.1 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.17.1 Windows executable" href="exiv2-0.17.1-win.zip" >exiv2-0.17.1-win.zip</a></td>
|
||||||
|
<td>1557896</td>
|
||||||
|
<td>19-Jun-2008</td>
|
||||||
|
<td>b33ee61aef7d9fe37e75c776523bc72c</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.17 Source</td>
|
||||||
|
<td><a title="Download the v0.17 source package" href="exiv2-0.17.tar.gz" >exiv2-0.17.tar.gz</a></td>
|
||||||
|
<td>1807917</td>
|
||||||
|
<td>06-Jun-2008</td>
|
||||||
|
<td>800508a2d6db7b736cced8cfeff97a4e</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.17 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.17 Windows executable" href="exiv2-0.17-win.zip" >exiv2-0.17-win.zip</a></td>
|
||||||
|
<td>1557670</td>
|
||||||
|
<td>06-Jun-2008</td>
|
||||||
|
<td>78635a863842789be0ce7129205e1467</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.16 Source</td>
|
||||||
|
<td><a title="Download the v0.16 source package" href="exiv2-0.16.tar.gz" >exiv2-0.16.tar.gz</a></td>
|
||||||
|
<td>1591822</td>
|
||||||
|
<td>10-Jan-2008</td>
|
||||||
|
<td>a6e72343885d990c593bd013c6c988f1</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.16 Documentation</td>
|
||||||
|
<td><a title="Download the v0.16 API documentation and metadata tag reference" href="exiv2-0.16-doc.tar.gz" >exiv2-0.16-doc.tar.gz</a></td>
|
||||||
|
<td>2730508</td>
|
||||||
|
<td>10-Jan-2008</td>
|
||||||
|
<td>ad8bf4b006b6a22f5a9d50856c1b6285</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.16 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.16 Windows executable" href="exiv2-0.16-win.zip" >exiv2-0.16-win.zip</a></td>
|
||||||
|
<td>1499946</td>
|
||||||
|
<td>10-Jan-2008</td>
|
||||||
|
<td>8de2fc0f942a7fa4ade825da2743a7ca</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.16-pre1 Source</td>
|
||||||
|
<td><a title="Download the v0.16-pre1 source package" href="exiv2-0.16-pre1.tar.gz" >exiv2-0.16-pre1.tar.gz</a></td>
|
||||||
|
<td>1540861</td>
|
||||||
|
<td>09-Nov-2007</td>
|
||||||
|
<td>e4d0836f92b917f6e5ff85041c8717fb</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.16-pre1 Documentation</td>
|
||||||
|
<td><a title="Download the v0.16-pre1 API documentation and metadata tag reference" href="exiv2-0.16-pre1-doc.tar.gz" >exiv2-0.16-pre1-doc.tar.gz</a></td>
|
||||||
|
<td>2713829</td>
|
||||||
|
<td>09-Nov-2007</td>
|
||||||
|
<td>7e1b5bc79195e3d818f4c7e12866bf99</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.16-pre1 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.16-pre1 Windows executable" href="exiv2-0.16-pre1-win.zip" >exiv2-0.16-pre1-win.zip</a></td>
|
||||||
|
<td>1498744</td>
|
||||||
|
<td>09-Nov-2007</td>
|
||||||
|
<td>570d7e34404aa3315811e5a33d13f9cd</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.15 Source</td>
|
||||||
|
<td><a title="Download the v0.15 source package" href="exiv2-0.15.tar.gz" >exiv2-0.15.tar.gz</a></td>
|
||||||
|
<td>1133249</td>
|
||||||
|
<td>10-Jul-2007</td>
|
||||||
|
<td>bb18d19e1d6fb255dadda456cadec00e</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.15 Documentation</td>
|
||||||
|
<td><a title="Download the v0.15 API documentation and metadata tag reference" href="exiv2-0.15-doc.tar.gz" >exiv2-0.15-doc.tar.gz</a></td>
|
||||||
|
<td>2586720</td>
|
||||||
|
<td>10-Jul-2007</td>
|
||||||
|
<td>51adef87722e057805ad863be9cb131a</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.15 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.15 Windows executable" href="exiv2-0.15-win.zip" >exiv2-0.15-win.zip</a></td>
|
||||||
|
<td>1115891</td>
|
||||||
|
<td>10-Jul-2007</td>
|
||||||
|
<td>508f9376c7c143876ef202b1308ff0dd</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.14 Source</td>
|
||||||
|
<td><a title="Download the v0.14 source package" href="exiv2-0.14.tar.gz" >exiv2-0.14.tar.gz</a></td>
|
||||||
|
<td>1028225</td>
|
||||||
|
<td>19-Mar-2007</td>
|
||||||
|
<td>6f8edde77d95f49fc83329feb615bb33</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.14 Documentation</td>
|
||||||
|
<td><a title="Download the v0.14 API documentation and metadata tag reference" href="exiv2-0.14-doc.tar.gz" >exiv2-0.14-doc.tar.gz</a></td>
|
||||||
|
<td>1835888</td>
|
||||||
|
<td>20-Mar-2007</td>
|
||||||
|
<td>7245efe6934e8febc4466e50acd939f6</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.14 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.14 Windows executable" href="exiv2-0.14-win.zip" >exiv2-0.14-win.zip</a></td>
|
||||||
|
<td>1112164</td>
|
||||||
|
<td>19-Mar-2007</td>
|
||||||
|
<td>635019737e2b72446055b4929e8871ac</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.13 Source</td>
|
||||||
|
<td><a title="Download the v0.13 source package" href="exiv2-0.13.tar.gz" >exiv2-0.13.tar.gz</a></td>
|
||||||
|
<td>2841724</td>
|
||||||
|
<td>03-Mar-2007</td>
|
||||||
|
<td>492d476e3130ac27983d93e5595d81e8</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.13 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.13 Windows executable" href="exiv2-0.13-win.zip" >exiv2-0.13-win.zip</a></td>
|
||||||
|
<td>1109773</td>
|
||||||
|
<td>03-Mar-2007</td>
|
||||||
|
<td>825d221f787ef97b5dc571f30d4cf561</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.12 Source</td>
|
||||||
|
<td><a title="Download the v0.12 source package" href="exiv2-0.12.tar.gz" >exiv2-0.12.tar.gz</a></td>
|
||||||
|
<td>2359138</td>
|
||||||
|
<td>27-Nov-2006</td>
|
||||||
|
<td>a97a4e489df7ec99458e3e33b506c3e6</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.12 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.12 Windows executable" href="exiv2-0.12-win.zip" >exiv2-0.12-win.zip</a></td>
|
||||||
|
<td>440131</td>
|
||||||
|
<td>01-Dec-2006</td>
|
||||||
|
<td>82dbfa8f4d190b26c99481b778e01a06</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.11 Source</td>
|
||||||
|
<td><a title="Download the v0.11 source package" href="exiv2-0.11.tar.gz" >exiv2-0.11.tar.gz</a></td>
|
||||||
|
<td>2380087</td>
|
||||||
|
<td>16-Sep-2006</td>
|
||||||
|
<td>269ce822946c56549d086f0c08dffc79</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.11 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.11 Windows executable" href="exiv2-0.11-win.zip" >exiv2-0.11-win.zip</a></td>
|
||||||
|
<td>407109</td>
|
||||||
|
<td>16-Sep-2006</td>
|
||||||
|
<td>cc75a88f1c447e7bff63da0de0c7c24b</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.10 Source</td>
|
||||||
|
<td><a title="Download the v0.10 source package" href="exiv2-0.10.tar.gz" >exiv2-0.10.tar.gz</a></td>
|
||||||
|
<td>2053756</td>
|
||||||
|
<td>03-Jun-2006</td>
|
||||||
|
<td>5af2256fb9895d9331684e8c1865b956</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.10 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.10 Windows executable" href="exiv2-0.10-win.zip" >exiv2-0.10-win.zip</a></td>
|
||||||
|
<td>404766</td>
|
||||||
|
<td>03-Jun-2006</td>
|
||||||
|
<td>b67a0a6804bce8b85593325b02c0d2cf</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.9.1 Source</td>
|
||||||
|
<td><a title="Download the v0.9.1 source package" href="exiv2-0.9.1.tar.gz" >exiv2-0.9.1.tar.gz</a></td>
|
||||||
|
<td>1602868</td>
|
||||||
|
<td>04-Feb-2006</td>
|
||||||
|
<td>4c6593751368f5e9235d85e0d4058e67</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.9.1 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.9.1 Windows executable" href="exiv2-0.9.1-win.zip" >exiv2-0.9.1-win.zip</a></td>
|
||||||
|
<td>355312</td>
|
||||||
|
<td>04-Feb-2006</td>
|
||||||
|
<td>805c81c16741f2e41e59e7dfd37fe1a2</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.9 Source</td>
|
||||||
|
<td><a title="Download the v0.9 source package" href="exiv2-0.9.tar.gz" >exiv2-0.9.tar.gz</a></td>
|
||||||
|
<td>1613781</td>
|
||||||
|
<td>26-Jan-2006</td>
|
||||||
|
<td>ee82fcba2741f5c771cb21d3eacefeef</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.9 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.9 Windows executable" href="exiv2-0.9-win.zip" >exiv2-0.9-win.zip</a></td>
|
||||||
|
<td>355270</td>
|
||||||
|
<td>26-Jan-2006</td>
|
||||||
|
<td>fa54efd391e87fea0c309b65ca5f1a65</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.8 Source</td>
|
||||||
|
<td><a title="Download the v0.8 source package" href="exiv2-0.8.tar.gz" >exiv2-0.8.tar.gz</a></td>
|
||||||
|
<td>1318689</td>
|
||||||
|
<td>19-Nov-2005</td>
|
||||||
|
<td>70779ef4adb2a41732c44dcdbd535412</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.8 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.8 Windows executable" href="exiv2-0.8-win.zip" >exiv2-0.8-win.zip</a></td>
|
||||||
|
<td>338156</td>
|
||||||
|
<td>19-Nov-2005</td>
|
||||||
|
<td>bfc1787972dcc5557833b2d75be32447</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.7 Source</td>
|
||||||
|
<td><a title="Download the v0.7 source package" href="exiv2-0.7.tar.gz" >exiv2-0.7.tar.gz</a></td>
|
||||||
|
<td>1245111</td>
|
||||||
|
<td>15-Jun-2005</td>
|
||||||
|
<td>540e720b77c05ca50d5005a140e38138</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.7 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.7 Windows executable" href="exiv2-0.7-win.zip" >exiv2-0.7-win.zip</a></td>
|
||||||
|
<td>273949</td>
|
||||||
|
<td>15-Jun-2005</td>
|
||||||
|
<td>6c26bdb7a2c949c7771269ead55b53b2</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.6.2 Source</td>
|
||||||
|
<td><a title="Download the v0.6.2 source package" href="exiv2-0.6.2.tar.gz" >exiv2-0.6.2.tar.gz</a></td>
|
||||||
|
<td>975615</td>
|
||||||
|
<td>06-Mar-2005</td>
|
||||||
|
<td>2f41777091b2145c4799c3bed55519e3</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.6.2 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.6.2 Windows executable" href="exiv2-0.6.2-win.zip" >exiv2-0.6.2-win.zip</a></td>
|
||||||
|
<td>248513</td>
|
||||||
|
<td>06-Mar-2005</td>
|
||||||
|
<td>7031cc7228ac376f643601d72d919e91</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.6.1 Source</td>
|
||||||
|
<td><a title="Download the v0.6.1 source package" href="exiv2-0.6.1.tar.gz" >exiv2-0.6.1.tar.gz</a></td>
|
||||||
|
<td>749879</td>
|
||||||
|
<td>17-Jan-2005</td>
|
||||||
|
<td>34b702a84c3448832c07bb0c02e829bc</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.6.1 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.6.1 Windows executable" href="exiv2-0.6.1-win.zip" >exiv2-0.6.1-win.zip</a></td>
|
||||||
|
<td>248002</td>
|
||||||
|
<td>17-Jan-2005</td>
|
||||||
|
<td>fdfc905dd8a13a43d4980a9091bb1e48</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.6 Source</td>
|
||||||
|
<td><a title="Download the v0.6 source package" href="exiv2-0.6.tar.gz" >exiv2-0.6.tar.gz</a></td>
|
||||||
|
<td>716240</td>
|
||||||
|
<td>12-Dec-2004</td>
|
||||||
|
<td>464bcf3878d65196e0a326b2e24752e9</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.6 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.6 Windows executable" href="exiv2-0.6-win.zip" >exiv2-0.6-win.zip</a></td>
|
||||||
|
<td>236965</td>
|
||||||
|
<td>12-Dec-2004</td>
|
||||||
|
<td>66088a3424b6e2fbc2a7a8887d2b1343</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.5 Source</td>
|
||||||
|
<td><a title="Download the v0.5 source package" href="exiv2-0.5.tar.gz" >exiv2-0.5.tar.gz</a></td>
|
||||||
|
<td>645739</td>
|
||||||
|
<td>13-Sep-2004</td>
|
||||||
|
<td>e9362bc1b9e5cea5b095a99af08613ee</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.5 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.5 Windows executable" href="exiv2-0.5-win.zip" >exiv2-0.5-win.zip</a></td>
|
||||||
|
<td>219168</td>
|
||||||
|
<td>13-Sep-2004</td>
|
||||||
|
<td>8347281c3d7430ab48547d04a9c42a8d</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.4 Source</td>
|
||||||
|
<td><a title="Download the v0.4 source package" href="exiv2-0.4.tar.gz" >exiv2-0.4.tar.gz</a></td>
|
||||||
|
<td>430893</td>
|
||||||
|
<td>03-Jul-2004</td>
|
||||||
|
<td>8b29148c36225836a1935a8b4193b060</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.4 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.4 Windows executable" href="exiv2-0.4-win.zip" >exiv2-0.4-win.zip</a></td>
|
||||||
|
<td>197304</td>
|
||||||
|
<td>03-Jul-2004</td>
|
||||||
|
<td>fa05437d78c32737f17c9c6ea8badb24</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v0.3 Source</td>
|
||||||
|
<td><a title="Download the v0.3 source package" href="exiv2-0.3.tar.gz" >exiv2-0.3.tar.gz</a></td>
|
||||||
|
<td>372479</td>
|
||||||
|
<td>10-May-2004</td>
|
||||||
|
<td>3ea7ecc9a37ebf75a46c6e7f0286ab55</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v0.3 Windows executable</td>
|
||||||
|
<td><a title="Download the v0.3 Windows executable" href="exiv2-0.3-win.zip" >exiv2-0.3-win.zip</a></td>
|
||||||
|
<td>188242</td>
|
||||||
|
<td>10-May-2004</td>
|
||||||
|
<td>be15cbf86e3a3e91a44f1749f6eb8f1d</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
var t1 = new SortableTable(
|
||||||
|
document.getElementById("report-1"),
|
||||||
|
["String", "String", "Number", "String", "String"]
|
||||||
|
);
|
||||||
|
t1.onsort = function () {
|
||||||
|
var rows = t1.tBody.rows;
|
||||||
|
var l = rows.length;
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
removeClassName(rows[i], i % 2 ? "OddRow" : "EvenRow");
|
||||||
|
addClassName(rows[i], i % 2 ? "EvenRow" : "OddRow");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,20 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header1__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Exiv2 changelog</h2>
|
||||||
|
|
||||||
|
<div class="fragment"><pre>
|
||||||
|
__ChangeLog__
|
||||||
|
</pre></div>
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,159 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Download</h2>
|
||||||
|
<p>There are two packages available for download here: the original source
|
||||||
|
package and one with just a Windows executable.</p>
|
||||||
|
|
||||||
|
<p>From the <b>source package</b> you can build the Exiv2 library, command
|
||||||
|
line utility, the
|
||||||
|
<a title="organize directories with digital images" href="http://dev.exiv2.org/boards/3/topics/show/44">organize</a>
|
||||||
|
tool and a number of simple example and test applications. With a
|
||||||
|
few additional third party tools you can also generate the complete
|
||||||
|
API documentation. The package includes standard build files for
|
||||||
|
UNIX-like systems (including GNU/Linux, Mac OS X and MinGW) as well
|
||||||
|
as Visual Studio project files for Visual C++ .NET 2003 (MSVC 7.1)
|
||||||
|
and later. After downloading and unpacking the distribution, please
|
||||||
|
see the <em>README</em> file in the top directory for build and
|
||||||
|
installation notes and further information.
|
||||||
|
|
||||||
|
<p>The <b>Windows package</b> only contains the command line utility
|
||||||
|
<code>exiv2.exe</code>, Expat DLL, Exiv2 manpage and two sample
|
||||||
|
command files. To get started, run the executable with the -h
|
||||||
|
parameter from a cmd shell:
|
||||||
|
<code><a title="Exiv2 usage" href="sample.html#usage">exiv2 -h</a></code>.
|
||||||
|
For details, read the <a href="manpage.html" title="Exiv2 man page">man page</a>.
|
||||||
|
The Windows executable was compiled with the
|
||||||
|
<a title="MinGW homepage" href="http://www.mingw.org">MinGW</a> cross compiler
|
||||||
|
on an Intel 32 bit machine running
|
||||||
|
<a title="Debian homepage" href="http://www.debian.org">Debian</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>As an alternative to the packages here, many Linux distributions,
|
||||||
|
BSD-based systems and Open Source package collections for Darwin and
|
||||||
|
Mac OS X have their own Exiv2 packages that can be installed via the
|
||||||
|
package management system of the distribution.</p>
|
||||||
|
|
||||||
|
<table class="ReportTable" id="report-2" cellspacing="0">
|
||||||
|
<colgroup>
|
||||||
|
<col>
|
||||||
|
<col>
|
||||||
|
<col align="center">
|
||||||
|
<col align="center">
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><b>Package</b></th>
|
||||||
|
<th><b>Filename</b></th>
|
||||||
|
<th><b>Size (Bytes)</b></th>
|
||||||
|
<th><b>Date</b></th>
|
||||||
|
<th><b>MD5</b></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="OddRow">
|
||||||
|
<td>Exiv2 v__version__ Source</td>
|
||||||
|
<td><a title="Download the v__version__ source package" href="exiv2-__version__.tar.gz" >exiv2-__version__.tar.gz</a></td>
|
||||||
|
<td>__size_src_pkg__</td>
|
||||||
|
<td>__rel_date_src_pkg__</td>
|
||||||
|
<td>__md5sum_src_pkg__</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="EvenRow">
|
||||||
|
<td>Exiv2 v__version__ Windows executable</td>
|
||||||
|
<td><a title="Download the v__version__ Windows executable" href="exiv2-__version__-win.zip" >exiv2-__version__-win.zip</a></td>
|
||||||
|
<td>__size_win_pkg__</td>
|
||||||
|
<td>__rel_date_win_pkg__</td>
|
||||||
|
<td>__md5sum_win_pkg__</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
var t1 = new SortableTable(
|
||||||
|
document.getElementById("report-2"),
|
||||||
|
["String", "String", "Number", "String", "String"]
|
||||||
|
);
|
||||||
|
t1.onsort = function () {
|
||||||
|
var rows = t1.tBody.rows;
|
||||||
|
var l = rows.length;
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
removeClassName(rows[i], i % 2 ? "OddRow" : "EvenRow");
|
||||||
|
addClassName(rows[i], i % 2 ? "EvenRow" : "OddRow");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<p><a title="Old packages" href="archive.html">Older releases</a> are
|
||||||
|
also still available.
|
||||||
|
See the <a title="Changelog" href="changelog.html">ChangeLog</a>
|
||||||
|
for a detailed list of changes between releases.</p>
|
||||||
|
|
||||||
|
<p>Exiv2 is developed on GNU/Linux with recent versions of
|
||||||
|
<a title="The GNU Compiler Collection" href="http://gcc.gnu.org/">GCC</a>.
|
||||||
|
Written in C++, it uses the standard C++ library, a few POSIX
|
||||||
|
and C functions and is fairly portable. Dependencies are on
|
||||||
|
<a title="zlib homepage" href="http://www.zlib.net">zlib</a> for PNG
|
||||||
|
support,
|
||||||
|
<a title="gettext homepage" href="http://www.gnu.org/software/gettext/">gettext</a>
|
||||||
|
for NLS,
|
||||||
|
<a title="libiconv homepage" href="http://www.gnu.org/software/libiconv/">libiconv</a>
|
||||||
|
for characterset conversions and
|
||||||
|
<a title="Expat homepage" href="http://expat.sourceforge.net/">Expat</a> for XMP support.
|
||||||
|
(Note that modern Linux distributions usually have gettext and iconv in libc
|
||||||
|
and these features can be disabled individually.)</p>
|
||||||
|
|
||||||
|
<h2><a name="devel">Repository</a></h2>
|
||||||
|
|
||||||
|
<p>Exiv2 is maintained in a Subversion repository. You can
|
||||||
|
<a href="http://dev.exiv2.org/repositories/show/exiv2" title="Exiv2 online source code repository" >browse the source code online</a>
|
||||||
|
or get a copy of the latest development code from the repository.
|
||||||
|
Once you have the source code, see the <em>README</em> file in the top
|
||||||
|
directory for build and installation notes.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>To check-out the current source code from the repository, you need a
|
||||||
|
<a title="Get Subversion!"
|
||||||
|
href="http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients">Subversion client</a>.
|
||||||
|
If you use a command line client, change to the directory where you want to keep
|
||||||
|
the source code and type:</p>
|
||||||
|
|
||||||
|
<div class="fragment"><pre>
|
||||||
|
<span class="stringliteral">$ svn checkout svn://dev.exiv2.org/svn/trunk</span>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Not included in the source distribution are test data and several
|
||||||
|
test drivers. To download these directly from the repository (about
|
||||||
|
27 MB), change to your local exiv2-__version__/ directory and use the
|
||||||
|
following command:</p>
|
||||||
|
|
||||||
|
<div class="fragment"><pre>
|
||||||
|
<span class="stringliteral">$ svn export svn://dev.exiv2.org/svn/tags/__version__/test</span>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<h2><a name="license">License</a></h2>
|
||||||
|
|
||||||
|
<p>Exiv2 is <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a>;
|
||||||
|
you can redistribute it and/or modify it under the terms of the
|
||||||
|
<a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public
|
||||||
|
License</a> as published by the Free Software Foundation; either
|
||||||
|
version 2 of the License, or (at your option) any later version.</p>
|
||||||
|
<p>Alternatively, Exiv2 is also available with a commercial license, which allows it to be
|
||||||
|
used in closed-source projects. Contact me for more information.</p>
|
||||||
|
<p>Exiv2 is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</p>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,5 @@
|
|||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,7 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header3__
|
||||||
|
<body>
|
||||||
|
__sidebar5__
|
||||||
|
|
||||||
|
<div id="content">
|
@ -0,0 +1,24 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header1__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Example 1: exifprint.cpp</h2>
|
||||||
|
|
||||||
|
<p>Here is a very simple program to read and print the Exif metadata
|
||||||
|
of an image. Go to <a title="Sample usage of high-level metadata operations"
|
||||||
|
href="example2.html#exifprint">Example2</a> to see how the
|
||||||
|
output looks like.</p>
|
||||||
|
|
||||||
|
__example1__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,45 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header1__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Example 2: addmoddel.cpp</h2>
|
||||||
|
<p>Sample usage of high-level Exiv2 library calls to add, modify and delete Exif metadata.</p>
|
||||||
|
|
||||||
|
__example2__
|
||||||
|
|
||||||
|
<p>Here is the image with the Exif metadata from this example</p>
|
||||||
|
|
||||||
|
<img style="border:1px solid #CCCCCC;" src="include/img_2158.jpg" height="386"
|
||||||
|
width="360" title="img_2158.jpg (28036 Bytes)"
|
||||||
|
alt="Image containing the Exif metadata from example 2">
|
||||||
|
|
||||||
|
<p>Using the print function from
|
||||||
|
<a title="Reading and printing the Exif metadata of an image"
|
||||||
|
href="example1.html">Example1</a> shows the
|
||||||
|
following Exif tags in the image. Note the tag
|
||||||
|
<em>Exif.Image.ExifTag</em>: It is required by the Exif standard because
|
||||||
|
the metadata contains an <em>Exif.Photo.*</em> tag and is automatically
|
||||||
|
added by Exiv2 to ensure that the Exif structure is valid.</p>
|
||||||
|
|
||||||
|
<a name="exifprint"></a>
|
||||||
|
<div class="fragment"><pre>
|
||||||
|
<span class="stringliteral">$ exifprint img_2158.jpg</span>
|
||||||
|
Exif.Image.Model 0x0110 Ascii 7 Test 1
|
||||||
|
Exif.Image.SamplesPerPixel 0x0115 Short 1 162
|
||||||
|
Exif.Image.XResolution 0x011a SLong 1 -2
|
||||||
|
Exif.Image.YResolution 0x011b SRational 1 -2/3
|
||||||
|
Exif.Image.ExifTag 0x8769 Long 1 89
|
||||||
|
Exif.Photo.DateTimeOriginal 0x9003 Ascii 20 2000:12:31 23:59:59
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,38 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header1__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Example 3: iptcprint.cpp</h2>
|
||||||
|
|
||||||
|
<p>This is a very simple program to read and print the IPTC metadata
|
||||||
|
of an image.</p>
|
||||||
|
|
||||||
|
__example3__
|
||||||
|
|
||||||
|
<a name="smiley1"></a>
|
||||||
|
<p><img style="border:1px solid #CCCCCC;" src="include/smiley1.jpg" height="140" width="167" title="smiley1.jpg (2909 Bytes)" alt="Sample image with the IPTC data shown below"></p>
|
||||||
|
|
||||||
|
<div class="fragment"><pre>
|
||||||
|
<span class="stringliteral">$ iptcprint smiley1.jpg</span>
|
||||||
|
|
||||||
|
Iptc.Application2.Headline 0x0069 String 17 The headline I am
|
||||||
|
Iptc.Application2.Keywords 0x0019 String 19 Yet another keyword
|
||||||
|
Iptc.Application2.DateCreated 0x0037 Date 8 2004-08-03
|
||||||
|
Iptc.Application2.Urgency 0x000a String 5 very!
|
||||||
|
Iptc.Envelope.ModelVersion 0x0000 Short 1 42
|
||||||
|
Iptc.Envelope.TimeSent 0x0050 Time 11 14:41:00-05:00
|
||||||
|
Iptc.Application2.RasterizedCaption 0x007d Undefined 8 230 42 34 2 90 84 23 146
|
||||||
|
Iptc.0x0009.0x0001 0x0001 String 9 Who am I?
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,23 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header1__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Example 4: iptceasy.cpp</h2>
|
||||||
|
|
||||||
|
<p>This shows the quickest way to access, set or modify IPTC metadata, which is similar to how std::map works. The sample
|
||||||
|
program writes the IPTC data to a file. <a title="Reading and printing the IPTC metadata of an image"
|
||||||
|
href="example3.html#smiley1">Example 3</a> has the image with this IPTC data.</p>
|
||||||
|
|
||||||
|
__example4__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,86 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header1__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Exiv2 Overview</h2>
|
||||||
|
<p>Exiv2 is a <a href="#lib">C++ library</a> and a <a href="#util">command line utility</a>
|
||||||
|
to manage image <a href="http://en.wikipedia.org/wiki/Metadata">metadata</a>.
|
||||||
|
It provides fast and easy read and write access to the
|
||||||
|
<a href="http://en.wikipedia.org/wiki/Exif">Exif</a>,
|
||||||
|
<a href="http://en.wikipedia.org/wiki/IPTC">IPTC</a> and
|
||||||
|
<a href="http://en.wikipedia.org/wiki/Extensible_Metadata_Platform">XMP</a> metadata
|
||||||
|
of images in <a href="http://dev.exiv2.org/wiki/exiv2/Supported_image_formats">various formats</a>.
|
||||||
|
Exiv2 is available as <a href="download.html#license">free software</a> and with a
|
||||||
|
<a href="download.html#license">commercial license</a>, and is used in many projects</a>.</p>
|
||||||
|
|
||||||
|
<p><a name="lib">The Exiv2 library provides</a></p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
|
||||||
|
<table cellspacing="0" align="right" border="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<div id="ohloh_factoids">
|
||||||
|
<script type="text/javascript" src="http://www.ohloh.net/p/13985/widgets/project_factoids.js"></script>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
fast read and write access to the Exif, IPTC, and XMP metadata
|
||||||
|
of an image
|
||||||
|
</li>
|
||||||
|
<li>an easy to use and <a href="doc/index.html" title="Exiv2 API documentation">extensively documented</a> API</li>
|
||||||
|
<li>conversions of Exif and IPTC metadata to XMP and vice versa</li>
|
||||||
|
<li>a smart IPTC implementation that does not affect data that programs like Photoshop store
|
||||||
|
in the same image segment</li>
|
||||||
|
<li>Exif <a href="makernote.html" title="Exif Makernote Formats and Specifications">Makernote</a> support:
|
||||||
|
<ul>
|
||||||
|
<li>Makernote tags can be read and written just like any other metadata</li>
|
||||||
|
<li>a sophisticated write algorithm avoids corrupting the Makernote</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>a simple interface to extract previews embedded in RAW images and Exif thumbnails</li>
|
||||||
|
<li>set and delete methods for Exif thumbnails</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>Examples: <a title="Reading and printing the Exif metadata of an image" href="example1.html">read Exif</a>;
|
||||||
|
<a title="Sample usage of high-level Exif metadata operations" href="example2.html">add, modify, delete Exif</a>;
|
||||||
|
<a title="Reading and printing the IPTC metadata of an image" href="example3.html">read IPTC</a>;
|
||||||
|
<a title="The quickest way to access, set or modify IPTC metadata" href="example4.html">set IPTC</a>;
|
||||||
|
<a title="Sample (test) usage of high level XMP classes" href="example5.html">set XMP</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><a name="util">Exiv2 is also a command line utility to</a></p>
|
||||||
|
<ul>
|
||||||
|
<li>print Exif, IPTC and XMP image metadata in different formats: Exif summary info, interpreted values,
|
||||||
|
or the plain data for each tag (a <a title="Sample Exiv2 utility output" href="sample.html">sample</a> is here)</li>
|
||||||
|
<li><a title="Modify" href="sample.html#modify">set, add and delete</a> Exif, IPTC and XMP image metadata
|
||||||
|
from command line modify commands or command scripts</li>
|
||||||
|
<li>adjust the Exif timestamp (that's how it all started...)</li>
|
||||||
|
<li>rename Exif image files according to the Exif timestamp</li>
|
||||||
|
<li>extract, insert and delete Exif, IPTC and XMP metadata and JPEG comments</li>
|
||||||
|
<li>extract previews from RAW images and thumbnails from the Exif metadata</li>
|
||||||
|
<li>insert and delete the thumbnail image embedded in the Exif metadata</li>
|
||||||
|
<li>print, set and delete the JPEG comment of JPEG images</li>
|
||||||
|
<li>fix the Exif ISO setting of picture taken with Canon and Nikon cameras</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>Future plans include</p>
|
||||||
|
<ul>
|
||||||
|
<li>a unified metadata container</li>
|
||||||
|
<li>support for additional image formats</li>
|
||||||
|
<li>more Makernotes</li>
|
||||||
|
</ul>
|
||||||
|
<p>The <a href="http://dev.exiv2.org/projects/roadmap/exiv2">roadmap</a> has details for the upcoming version.</p>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,24 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar3__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>IPTC datasets defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Datasets are defined according to the specification of the IPTC
|
||||||
|
<a href="http://www.iptc.org/IIM/">Information Interchange Model (IIM)</a>.</p>
|
||||||
|
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Iptc__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,86 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Makernote formats and specifications</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The Makernote is tag 0x927c in the Exif IFD (Exif.Photo.MakerNote). According to the
|
||||||
|
<a title="The Exif 2.2 standard (PDF)" href="http://www.exif.org/Exif2-2.PDF">
|
||||||
|
Exif 2.2 standard</a>, the makernote is <i>"a tag for manufacturers of
|
||||||
|
Exif writers to record any desired information. The contents are up to
|
||||||
|
the manufacturer, but this tag should not be used for any other than
|
||||||
|
its intended purpose."</i></p>
|
||||||
|
|
||||||
|
<p>Most vendors do not publish their makernote specifications. Most of the
|
||||||
|
<a href="#R0">specifications available on the Internet</a>
|
||||||
|
were reverse-engineered. Judging from the size of many makernote
|
||||||
|
fields, manufacturers store a lot of information there and from the
|
||||||
|
available specifications, some of this is certainly quite
|
||||||
|
interesting. For example, makernotes may contain information about the
|
||||||
|
lens used, contrast, saturation and sharpness settings, image quality
|
||||||
|
settings, etc. For some more advanced camera settings, the Exif
|
||||||
|
standard doesn't define a standard tag, so camera vendors have to
|
||||||
|
resort to using the makernote. Unfortunately, in some cases, camera
|
||||||
|
vendors store important information only in proprietary makernote
|
||||||
|
fields, instead of using available Exif standard tags. The most
|
||||||
|
infamous example for this is Nikon's ISO settings tag.</p>
|
||||||
|
|
||||||
|
<p>Most vendors write the makernote in TIFF format, i.e., in the same
|
||||||
|
format as the rest of the Exif information is encoded. This appears to
|
||||||
|
be a sensible thing at first glance. Unfortunately, in general it
|
||||||
|
means that <i>any</i> change of an Exif tag, which moves the
|
||||||
|
makernote field, will corrupt it. It is an inherent problem of the
|
||||||
|
TIFF format that a writer must know the format and all extensions
|
||||||
|
used, in order to be able to write changes correctly; unknown tags are
|
||||||
|
potentially corrupted when they are moved (rearranged). But since
|
||||||
|
makernotes are usually proprietary, Exif writers often don't know
|
||||||
|
these details. The reason to write to the Exif data could be as simple
|
||||||
|
as to add copyright information, an Exif comment, etc. Some camera
|
||||||
|
manufacturers seem to have recognized this problem and now use a
|
||||||
|
modified TIFF format with offsets relative to somewhere at the
|
||||||
|
beginning of the makernote field for the makernote IFD to address the
|
||||||
|
issue.</p>
|
||||||
|
|
||||||
|
<p>The following table summarizes the structures of the makernote
|
||||||
|
field used by some vendors. Please let me know if you have additional
|
||||||
|
information.</p>
|
||||||
|
|
||||||
|
__makernotes__
|
||||||
|
|
||||||
|
<p><a href="http://www.exif.org/">Exif.org</a> has another table with similar
|
||||||
|
info and sample pictures: <a href="http://www.exif.org/samples.html">Digital
|
||||||
|
Camera Sample Images</a>. According to this source, (at least some) Ricoh and
|
||||||
|
Kodak cameras do not write the makernote in IFD format.</p>
|
||||||
|
<h2><a name="R0">References</a></h2>
|
||||||
|
<p><a name="R1">[1]</a> <a href="http://park2.wakwak.com/%7Etsuruzoh/Computer/Digicams/exif-e.html">Exif
|
||||||
|
file format</a> by TsuruZoh Tachibanaya<br>
|
||||||
|
<a name="R2">[2]</a> <a href="http://www.burren.cx/david/canon.html">EXIF Makernote
|
||||||
|
of Canon</a> by David Burren<br>
|
||||||
|
<a name="R3">[3]</a> <a href="http://www.tawbaware.com/990exif.htm">Makernote
|
||||||
|
EXIF Tag of the Nikon 990</a> by Max Lyons<br>
|
||||||
|
<a name="R4">[4]</a> <a href="http://www.dicasoft.de/casiomn.htm">"Makernote"
|
||||||
|
Exif tag of Casio</a> by Eckhard Henkel<br>
|
||||||
|
<a name="R5">[5]</a> <a href="http://www.dalibor.cz/minolta/makernote.htm">Minolta
|
||||||
|
MakerNote</a> by Dalibor Jelinek<br>
|
||||||
|
<a name="R6">[6]</a> <a href="http://www.exif.org/makernotes/SanyoMakerNote.html">Sanyo
|
||||||
|
MakerNote</a> by John Hawkins<br>
|
||||||
|
<a name="R7">[7]</a> <a href="http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html">
|
||||||
|
SIGMA and FOVEON EXIF MakerNote Documentation</a> by Foveon<br>
|
||||||
|
<a name="R8">[8]</a> <a href="http://www.compton.nu/panasonic.html">Panasonic
|
||||||
|
MakerNote Information</a> by Tom Hughes<br>
|
||||||
|
<a name="R9">[9]</a> <a href="http://www.ozhiker.com/electronics/pjmt/jpeg_info/makernotes.html">
|
||||||
|
Various Makernote specifications</a> from the <a href="http://www.ozhiker.com/electronics/pjmt/index.html">
|
||||||
|
PHP JPEG Metadata Toolkit</a> by Evan Hunter<br>
|
||||||
|
<a name="R10">[10]</a> <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/">ExifTool</a>, the most complete and up-to-date tool for reading and writing meta information in image files, by Phil Harvey</p>
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,20 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header1__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Exiv2 Command line utility man page</h2>
|
||||||
|
|
||||||
|
<a href="exiv2-manpage.pdf" title="Exiv2 man page (PDF)">PDF version</a>
|
||||||
|
|
||||||
|
__manpage__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,65 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Metadata reference tables</h2>
|
||||||
|
<h3>Exif tags</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="tags.html">Standard Exif tags</a></li>
|
||||||
|
<li><a href="tags-canon.html">Canon MakerNote tags</a></li>
|
||||||
|
<li><a href="tags-fujifilm.html">Fujifilm MakerNote tags</a></li>
|
||||||
|
<li><a href="tags-minolta.html">Minolta MakerNote tags</a></li>
|
||||||
|
<li><a href="tags-nikon.html">Nikon MakerNote tags</a></li>
|
||||||
|
<li><a href="tags-olympus.html">Olympus MakerNote tags</a></li>
|
||||||
|
<li><a href="tags-panasonic.html">Panasonic MakerNote tags</a></li>
|
||||||
|
<li><a href="tags-pentax.html">Pentax MakerNote tags</a></li>
|
||||||
|
<li><a href="tags-samsung.html">Samsung MakerNote tags</a></li>
|
||||||
|
<li><a href="tags-sigma.html">Sigma/Foveon MakerNote tags</a></li>
|
||||||
|
<li><a href="tags-sony.html">Sony MakerNote tags</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>IPTC datasets</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="iptc.html">IPTC datasets</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>XMP properties</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="tags-xmp-dc.html">Dublin Core schema (dc)</a></li>
|
||||||
|
<li><a href="tags-xmp-xmp.html">XMP Basic schema (xmp)</a></li>
|
||||||
|
<li><a href="tags-xmp-xmpRights.html">XMP Rights Management schema (xmpRights)</a></li>
|
||||||
|
<li><a href="tags-xmp-xmpMM.html">XMP Media Management schema (xmpMM)</a></li>
|
||||||
|
<li><a href="tags-xmp-xmpBJ.html">XMP Basic Job Ticket schema (xmpBJ)</a></li>
|
||||||
|
<li><a href="tags-xmp-xmpTPg.html">XMP Paged-Text schema (xmpTPg)</a></li>
|
||||||
|
<li><a href="tags-xmp-xmpDM.html">XMP Dynamic Media schema (xmpDM)</a></li>
|
||||||
|
<li><a href="tags-xmp-pdf.html">Adobe PDF schema (pdf)</a></li>
|
||||||
|
<li><a href="tags-xmp-photoshop.html">Photoshop schema (photoshop)</a></li>
|
||||||
|
<li><a href="tags-xmp-crs.html">Camera Raw schema (crs)</a></li>
|
||||||
|
<li><a href="tags-xmp-tiff.html">Exif schema for TIFF Properties (tiff)</a></li>
|
||||||
|
<li><a href="tags-xmp-exif.html">Exif schema for Exif-specific Properties (exif)</a></li>
|
||||||
|
<li><a href="tags-xmp-aux.html">Exif schema for Additional Exif Properties (aux)</a></li>
|
||||||
|
<li><a href="tags-xmp-iptc.html">IPTC Core schema (Iptc4xmpCore)</a></li>
|
||||||
|
<li><a href="tags-xmp-iptcExt.html">IPTC Extension schema (Iptc4xmpExt)</a></li>
|
||||||
|
<li><a href="tags-xmp-plus.html">PLUS License Data Format schema (plus)</a></li>
|
||||||
|
<li><a href="tags-xmp-digiKam.html">digiKam Photo Management schema (digiKam)</a></li>
|
||||||
|
<li><a href="tags-xmp-kipi.html">KDE Image Program Interface schema (kipi)</a></li>
|
||||||
|
<li><a href="tags-xmp-MicrosoftPhoto.html">Microsoft Photo schema (MicrosoftPhoto)</a></li>
|
||||||
|
<li><a href="tags-xmp-mediapro.html">iView Media Pro schema (mediapro)</a></li>
|
||||||
|
<li><a href="tags-xmp-expressionmedia.html">Microsoft Expression Media schema (expressionmedia)</a></li>
|
||||||
|
<li><a href="tags-xmp-MP.html">Microsoft Photo 1.2 schema (MP)</a></li>
|
||||||
|
<li><a href="tags-xmp-MPRI.html">Microsoft Photo RegionInfo schema (MPRI)</a></li>
|
||||||
|
<li><a href="tags-xmp-MPReg.html">Microsoft Photo Region schema (MPReg)</a></li>
|
||||||
|
<li><a href="tags-xmp-mwg-rs.html">Metadata Working Group Regions schema (mwg-rs)</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,628 @@
|
|||||||
|
<?xml version = '1.0'?>
|
||||||
|
<news>
|
||||||
|
<newsitem>
|
||||||
|
<date>23-Apr-2012</date>
|
||||||
|
<title>Exiv2 0.23 released</title>
|
||||||
|
<abstract>Write support for Canon CR2 raw images, bugfixes.
|
||||||
|
</abstract>
|
||||||
|
<desc>Exiv2 can now finally write metadata to Canon CR2 images. Besides, this release
|
||||||
|
adds support for Pentax makernotes in Pentax native DNG images, updates various lens lists
|
||||||
|
and contains the usual new minor features and bugfixes, which are all detailed in
|
||||||
|
the <a title="ChangeLog" href="changelog.html">ChangeLog</a>.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>18-Sep-2011</date>
|
||||||
|
<title>Exiv2 0.22 released</title>
|
||||||
|
<abstract>Postscript (EPS) support, MSVC 64 bit project.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release adds support to access previews and read and write XMP
|
||||||
|
metadata in Postscript images. It also introduces a new MSVC project for 64 bit
|
||||||
|
builds as well as many smaller features and bugfixes, all of which are listed in
|
||||||
|
the <a title="ChangeLog" href="changelog.html">ChangeLog</a> as usual.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>14-Feb-2011</date>
|
||||||
|
<title>Exiv2 0.21.1 released</title>
|
||||||
|
<abstract>Bugfixes.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release fixes several bugs that were present in 0.21 and is binary
|
||||||
|
compatible with the previous version. As usual, the
|
||||||
|
<a title="ChangeLog" href="changelog.html">ChangeLog</a> lists all
|
||||||
|
changes in detail.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>01-Dec-2010</date>
|
||||||
|
<title>Exiv2 0.21 released</title>
|
||||||
|
<abstract>Samsung SRW and Makernote support, API changes.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release adds read and write support for Samsung SRW
|
||||||
|
images and <a title="Samsung makernote tags" href="tags-samsung.html">Samsung makernotes</a>.
|
||||||
|
The exiv2 library now accepts a custom error handler and has a
|
||||||
|
setting to control which messages are generated. The exiv2 command
|
||||||
|
line tool has a new 'quiet' option which uses the new functionality
|
||||||
|
to suppress all library warnings.
|
||||||
|
Some important API changes will allow many future image format
|
||||||
|
and makernote enhancements to be done in a binary compatible
|
||||||
|
fashion. The new exiv2.hpp umbrella header file further shields
|
||||||
|
applications from library changes.
|
||||||
|
The <a title="ChangeLog" href="changelog.html">ChangeLog</a> lists these and
|
||||||
|
various smaller enhancements, bug fixes and tag updates in detail.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>30-May-2010</date>
|
||||||
|
<title>Exiv2 0.20 released</title>
|
||||||
|
<abstract>Makernote updates, ORF write support.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release includes
|
||||||
|
<a title="Sony makernote tags" href="tags-sony.html">Sony</a>,
|
||||||
|
<a title="Nikon makernote tags" href="tags-nikon.html">Nikon</a> and
|
||||||
|
<a title="Pentax makernote tags" href="tags-pentax.html">Pentax</a>
|
||||||
|
makernote updates and a significant performance improvement for Nikon
|
||||||
|
makernotes. Writing to Minolta raw images (ORF) is now supported.
|
||||||
|
Several TIFF tags and the XMP
|
||||||
|
<a href="tags-xmp-kipi.html" title="KDE Image Program Interface schema">KDE Image Program Interface (kipi) schema</a>,
|
||||||
|
<a href="tags-xmp-mediapro.html" title="iView Media Pro schema">iView Media Pro schema</a> and
|
||||||
|
<a href="tags-xmp-expressionmedia.html" title="Microsoft Expression Media schema">Microsoft Expression Media schema</a>
|
||||||
|
have been added. See the
|
||||||
|
<a title="ChangeLog" href="changelog.html">ChangeLog</a> for a complete list of
|
||||||
|
all enhancements and bugfixes in this release.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>30-Dec-2009</date>
|
||||||
|
<title>Exiv2 0.19 released</title>
|
||||||
|
<abstract>TIFF performance improvements and Nikon updates.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release has a dramatically reduced memory footprint when writing
|
||||||
|
to TIFF and TIFF-based images as the images are no longer completely
|
||||||
|
loaded into memory. In addition it improves performance of read
|
||||||
|
operations for such files by about a factor six on Windows. It also
|
||||||
|
provides extended Nikon makernote support. Exiv2 is now able to read
|
||||||
|
and write many additional
|
||||||
|
<a title="Nikon makernote tags" href="tags-nikon.html">Nikon makernote tags</a>,
|
||||||
|
including encrypted tags. The XMP toolkit used by Exiv2 has been upgraded to
|
||||||
|
the latest available version,
|
||||||
|
<a title="Iptc4xmpExt schema" href="tags-xmp-iptcExt.html">iptc4xmpExt</a> and
|
||||||
|
<a title="PLUS schema" href="tags-xmp-plus.html">plus</a> XMP schemas have been
|
||||||
|
added and several XMP conversion issues fixed.
|
||||||
|
The <a title="ChangeLog" href="changelog.html">ChangeLog</a> lists all
|
||||||
|
these enhancements and various other features and bugs that have been
|
||||||
|
addressed for this release.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>24-Jun-2009</date>
|
||||||
|
<title>Exiv2 0.18.2 released</title>
|
||||||
|
<abstract>Bugfix release.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release fixes several important issues found with PNG
|
||||||
|
write-support, writing to certain NEF images and writing comments to
|
||||||
|
JPG images, among others. It also contains minor Nikon and Minolta
|
||||||
|
lens updates and updates Polish translations.
|
||||||
|
The <a title="ChangeLog" href="changelog.html">ChangeLog</a> has
|
||||||
|
the complete list of changes, as usual.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>06-Apr-2009</date>
|
||||||
|
<title>Exiv2 0.18.1 released</title>
|
||||||
|
<abstract>Writes to PSD and reads from RW2 images.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release adds write-support for Adobe Photoshop PSD
|
||||||
|
images, read-support for Panasonic RW2 images, Panasonic and Nikon
|
||||||
|
makernote updates, and a number of improvements under the hood and
|
||||||
|
bug fixes, detailed in the <a title="ChangeLog" href="changelog.html">ChangeLog</a>.
|
||||||
|
It also includes a new utility,
|
||||||
|
<a title="organize directories with digital images" href="http://dev.exiv2.org/boards/3/topics/show/44">organize</a>,
|
||||||
|
contributed by Brad Schick.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>08-Jan-2009</date>
|
||||||
|
<title>Community website</title>
|
||||||
|
<abstract>dev.exiv2.org hosts all project resources.
|
||||||
|
</abstract>
|
||||||
|
<desc>Brad has migrated the Mantis issue tracker and the commit
|
||||||
|
info list to a
|
||||||
|
<a href="http://www.redmine.org" title="Redmine - a flexible project management web application">Redmine</a>
|
||||||
|
installation. This also includes a new forum, which replaces the Exiv2
|
||||||
|
Yahoo! group, and a new Exiv2 Wiki, all integrated, with a common
|
||||||
|
look-and-feel and a single sign-on. From the main website, these
|
||||||
|
project resources are accessible through the
|
||||||
|
<a href="http://dev.exiv2.org/wiki/exiv2" title="Exiv2 project resources and help centre">Project</a>
|
||||||
|
link in the sidebar.<br />
|
||||||
|
Thanks to Brad Schick for this latest innovation as well as his
|
||||||
|
reliable sysadmin services and sponsorship since the early days of
|
||||||
|
the project!
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>18-Dec-2008</date>
|
||||||
|
<title>Exiv2 0.18 released</title>
|
||||||
|
<abstract>It's official: Exiv2 writes to TIFF images.
|
||||||
|
</abstract>
|
||||||
|
<desc>Here is the final 0.18 release with write-support for TIFF,
|
||||||
|
DNG, NEF, PEF, PNG and JP2 images, makernote updates and access to
|
||||||
|
image previews. On Windows, Exiv2 can now be built as a DLL.<br />
|
||||||
|
In addition to the changes in the 0.18 pre-releases, the Exiv2
|
||||||
|
command line utility has new options to show all (Exif, IPTC and
|
||||||
|
XMP) metadata and to list and extract preview images, while the
|
||||||
|
library enhancements are mostly bug fixes and minor features. See
|
||||||
|
the <a title="ChangeLog" href="changelog.html">ChangeLog</a> for
|
||||||
|
details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>04-Nov-2008</date>
|
||||||
|
<title>Exiv2 0.18-pre2</title>
|
||||||
|
<abstract>Windows DLL, image previews.
|
||||||
|
</abstract>
|
||||||
|
<desc>With this pre-release it is now possible to build an Exiv2 Windows
|
||||||
|
DLL.<br />
|
||||||
|
A new API was added to
|
||||||
|
<a title="" href="http://uk.groups.yahoo.com/group/exiv2/message/1404">access image previews</a>
|
||||||
|
of any image. In addition to Exif thumbnails this allows retrieving
|
||||||
|
various other previews from RAW images and Exif MakerNotes through
|
||||||
|
a common interface.<br />
|
||||||
|
Another backward-compatible API change allows
|
||||||
|
<a title="" href="http://uk.groups.yahoo.com/group/exiv2/message/1408">advanced Exif pretty-printing functions</a>
|
||||||
|
to refer to all Exif tags.<br />
|
||||||
|
Further Exif improvements and fixes are detailed in the
|
||||||
|
<a title="ChangeLog" href="changelog.html">ChangeLog</a>.<br />
|
||||||
|
Again, please use this pre-release to test with backups of your
|
||||||
|
images and to adapt applications to the modified interface, and raise
|
||||||
|
issues in the <a title="Exiv2 support forum" href="support.html">forum</a>.
|
||||||
|
Your feedback is important to finalizing release 0.18.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>11-Sep-2008</date>
|
||||||
|
<title>Exiv2 0.18-pre1</title>
|
||||||
|
<abstract>Write-support for TIFF, PNG and JP2 images.
|
||||||
|
</abstract>
|
||||||
|
<desc>This pre-release adds write-support for TIFF, DNG, NEF, PEF,
|
||||||
|
PNG and JP2 images and provides the basis for write-support for
|
||||||
|
other TIFF-like RAW formats.<br />
|
||||||
|
The library's <a title="Exiv2 API documentation" href="doc/index.html">API</a>
|
||||||
|
was streamlined and internal symbols removed from the ABI. The
|
||||||
|
benefits of this change are manifold. In particular, the reduced
|
||||||
|
API is easier to work with and will ultimately be more stable.<br />
|
||||||
|
Under the hood, the TIFF parser code was consolidated: JPEG images
|
||||||
|
now also use the new TIFF parser to read and write Exif metadata
|
||||||
|
and the old obsolete code was removed.<br />
|
||||||
|
See the <a title="ChangeLog" href="changelog.html">ChangeLog</a> for a
|
||||||
|
complete list of changes and links to even more details.<br />
|
||||||
|
Please use this pre-release to test with backups of your images and
|
||||||
|
to adapt applications to the modified interface, and raise issues
|
||||||
|
in the
|
||||||
|
<a title="Exiv2 support forum" href="support.html">forum</a>.
|
||||||
|
This feedback is key to finalizing release 0.18.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>19-Jun-2008</date>
|
||||||
|
<title>Exiv2 0.17.1 released</title>
|
||||||
|
<abstract>Important bugfixes.
|
||||||
|
</abstract>
|
||||||
|
<desc>This is a bugfix release for some important issues, some of which
|
||||||
|
were introduced with the previous release. See the
|
||||||
|
<a title="ChangeLog" href="changelog.html">ChangeLog</a> for details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>06-Jun-2008</date>
|
||||||
|
<title>Exiv2 0.17 released</title>
|
||||||
|
<abstract>Conversion of Exif and IPTC to/from XMP, JP2 and PSD support.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release considerably extends the functionality for
|
||||||
|
dealing with XMP. It includes conversion of Exif and IPTC to/from
|
||||||
|
XMP, XMP sidecar files and XMP pretty printing functionality. It
|
||||||
|
also adds support for JPEG 2000 (JP2) and Photoshop (PSD) images,
|
||||||
|
among other
|
||||||
|
<a title="ChangeLog" href="changelog.html">improvements and fixes</a>.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>06-Mar-2008</date>
|
||||||
|
<title>API documentation</title>
|
||||||
|
<abstract>The complete API documentation is now available online.
|
||||||
|
</abstract>
|
||||||
|
<desc>The complete Exiv2 API documentation is now available
|
||||||
|
<a title="Exiv2 API documentation" href="doc/index.html">online</a>.
|
||||||
|
Thanks to Dimitri van Heesch for
|
||||||
|
<a title="Doxygen" href="http://www.doxygen.org">doxygen</a>,
|
||||||
|
the great source code documentation generator tool!
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>10-Jan-2008</date>
|
||||||
|
<title>Exiv2 0.16 released</title>
|
||||||
|
<abstract>XMP support also for MSVC, bugfixes, enhancements.
|
||||||
|
</abstract>
|
||||||
|
<desc>Here is the final 0.16 release with XMP support. It took longer
|
||||||
|
than it should have and thus contains quite a
|
||||||
|
<a title="ChangeLog" href="changelog.html">list</a> of bug fixes and
|
||||||
|
enhancements.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>09-Nov-2007</date>
|
||||||
|
<title>Exiv2 0.16-pre1</title>
|
||||||
|
<abstract>XMP support, Olympus ORF format and Pentax makernotes.
|
||||||
|
</abstract>
|
||||||
|
<desc>This is a pre-release of the upcoming Exiv2 0.16 with XMP
|
||||||
|
support. Adding XMP metadata to an image is now just as easy as
|
||||||
|
adding Exif or IPTC tags. In addition there is new support for Olympus ORF
|
||||||
|
images and Pentax makernotes. Please try Exiv2 0.16-pre1 and report issues
|
||||||
|
you may have with it to the
|
||||||
|
<a title="Exiv2 support forum" href="support.html">Exiv2 forum</a>.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>24-Sep-2007</date>
|
||||||
|
<title>XMP testing</title>
|
||||||
|
<abstract>XMP support is ready for testing.
|
||||||
|
</abstract>
|
||||||
|
<desc>The XMP implementation is now in the trunk in SVN and it is
|
||||||
|
reasonably complete and ready for testing. Please try it out and let
|
||||||
|
us know your comments. See
|
||||||
|
<a title="XMP BETA announcement" href="http://uk.groups.yahoo.com/group/exiv2/message/916">this announcement</a> for more details.</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>31-Aug-2007</date>
|
||||||
|
<title>XMP support</title>
|
||||||
|
<abstract>Support for XMP metadata is being developed.
|
||||||
|
</abstract>
|
||||||
|
<desc>We're working on adding XMP support to the library, which should
|
||||||
|
become the main feature of the next release.
|
||||||
|
Contributions are welcome, in particular we need input from potential
|
||||||
|
users about API preferences and XMP test data. You are invited to
|
||||||
|
join <a title="XMP discussion" href="http://uk.groups.yahoo.com/group/exiv2/message/836">this discussion</a> in the forum and
|
||||||
|
contribute your viewpoints.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>10-Jul-2007</date>
|
||||||
|
<title>Exiv2 0.15 released</title>
|
||||||
|
<abstract>Maintenace release, support for Minolta G500 RAW files.
|
||||||
|
</abstract>
|
||||||
|
<desc>This maintenance release fixes a number of bugs, adds support for
|
||||||
|
Minolta G500 RAW files and has minor tag and some larger translation updates.
|
||||||
|
See the <a title="ChangeLog" href="changelog.html">changelog</a> for a concise
|
||||||
|
listing of patches in this release.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>19-Mar-2007</date>
|
||||||
|
<title>Exiv2 0.14 released</title>
|
||||||
|
<abstract>Proper library versioning, small fixes and features.
|
||||||
|
</abstract>
|
||||||
|
<desc>Exiv2 now uses libtool's -version-info library versioning system, which
|
||||||
|
will allow future releases to indicate their compatibility with previous
|
||||||
|
releases. This release also fixes a few bugs and adds minor
|
||||||
|
features and tweaks to the build environment. See the
|
||||||
|
<a title="ChangeLog" href="changelog.html">changelog</a> for details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>03-Mar-2007</date>
|
||||||
|
<title>Exiv2 0.13 released</title>
|
||||||
|
<abstract>National Language Support, Fujifilm RAF read-support, ...
|
||||||
|
</abstract>
|
||||||
|
<desc>This release features the Native Language Support framework and
|
||||||
|
partial translations for Finnish, French, German, Polish, Russian
|
||||||
|
and Spanish. It adds read-support for Fujifilm RAF images and a number
|
||||||
|
of other features and fixes, listed in the
|
||||||
|
<a title="ChangeLog" href="changelog.html">changelog</a>.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>06-Dec-2006</date>
|
||||||
|
<title>Internationalisation</title>
|
||||||
|
<abstract>Exiv2 with NLS is ready to be translated.
|
||||||
|
</abstract>
|
||||||
|
<desc>A framework for Native Language Support (using
|
||||||
|
<a title="GNU gettext homepage" href="http://www.gnu.org/software/gettext">GNU gettext</a>)
|
||||||
|
has been added to the Exiv2 library in the SVN repository. This will
|
||||||
|
be the main new feature of the next release.<br />
|
||||||
|
Messages from Exiv2 like metadata tag titles, content, descriptions
|
||||||
|
are ready to be translated now. If you are interested to contribute to
|
||||||
|
the project, take a look at the
|
||||||
|
<a title="Development" href="download.html#devel">Exiv2 repository</a>.
|
||||||
|
You can start a new translation using the Exiv2.pot file or update an
|
||||||
|
existing PO file. Please contact me to coordinate; Thanks in advance!
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>27-Nov-2006</date>
|
||||||
|
<title>Exiv2 0.12 released</title>
|
||||||
|
<abstract>Maintenance release with bugfixes and minor features.
|
||||||
|
</abstract>
|
||||||
|
<desc>This is a bugfix release with just a few new features thrown
|
||||||
|
in. The exiv2 tool can now use the original filename when renaming
|
||||||
|
images and the library has pretty-print functions for Exif GPS tags.
|
||||||
|
See the <a title="ChangeLog" href="changelog.html">changelog</a>
|
||||||
|
for more.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>16-Sep-2006</date>
|
||||||
|
<title>Exiv2 0.11 released</title>
|
||||||
|
<abstract>Adds PNG and ARW support, a Canon makernote update,
|
||||||
|
performance improvements and more.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release adds PNG and Sony ARW file format support, both
|
||||||
|
read-only. Canon makernote tags were updated and a few additional
|
||||||
|
Canon composite tags are now recognized. Reading TIFF and related
|
||||||
|
files is about six times faster now compared to the previous version.
|
||||||
|
This release finally works with Visual Studio C++ 2005 (MSVC 8) and
|
||||||
|
fixes various bugs.
|
||||||
|
See the <a title="ChangeLog" href="changelog.html">changelog</a>
|
||||||
|
for details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>21-Aug-2006</date>
|
||||||
|
<title>Duallicensing</title>
|
||||||
|
<abstract>Exiv2 is now also available with a licence for use in closed-source
|
||||||
|
projects.
|
||||||
|
</abstract>
|
||||||
|
<desc>Exiv2 is now also available with a commercial license, i.e., for a fee,
|
||||||
|
which makes it suitable for use in closed-source projects. Contact me for details.
|
||||||
|
See this <a title="License discussion" href="http://uk.groups.yahoo.com/group/exiv2/message/255">discussion</a> in the forum for more information on the implications of this change.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>03-Jun-2006</date>
|
||||||
|
<title>Exiv2 0.10 released</title>
|
||||||
|
<abstract>Read support for TIFF, NEF, CR2, PEF, SR2, DNG and MRW images.
|
||||||
|
Minolta makernote support.
|
||||||
|
</abstract>
|
||||||
|
<desc>Exiv2 can now read TIFF images and a number of TIFF-based RAW
|
||||||
|
image formats, including Nikon NEF, Canon CR2, Pentax PEF, Sony SR2,
|
||||||
|
Adobe DNG and Minolta MRW formats. Besides displaying the Exif metadata,
|
||||||
|
you can easily copy it from TIFF or RAW files to JPEG files
|
||||||
|
(with the insert action).<br />
|
||||||
|
This release also adds
|
||||||
|
<a title="Minolta Makernote tags" href="tags-minolta.html">Minolta</a>
|
||||||
|
<a title="Makernote Formats and Specifications" href="makernote.html">makernote</a>
|
||||||
|
support among <a title="Changelog" href="changelog.html">other changes</a>.<br />
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>08-Mar-2006</date>
|
||||||
|
<title>Announcing exiv2.org</title>
|
||||||
|
<abstract>The Exiv2 project now has its own domain, www.exiv2.org
|
||||||
|
</abstract>
|
||||||
|
<desc>The new address not only looks nice, it is also hosted on an account with
|
||||||
|
sufficient bandwidth to support the steadily increasing number of downloads.<br />
|
||||||
|
If you have a bookmark or page that links to the old Exiv2 homepage, please change
|
||||||
|
it to the respective new page on
|
||||||
|
<a title="The new address of the Exiv2 project" href="http://www.exiv2.org/">www.exiv2.org/</a>.<br />
|
||||||
|
Thanks to Brad for hosting and sponsoring the site.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>04-Feb-2006</date>
|
||||||
|
<title>Exiv2 0.9.1 released</title>
|
||||||
|
<abstract>Fixes a bug which could cause an invalid Exif user comment tag
|
||||||
|
to be written to images.
|
||||||
|
</abstract>
|
||||||
|
<desc>Exiv2 wrote an invalid Exif.Photo.UserComment tag when it was added
|
||||||
|
to an image which didn't have this tag before. This bug is fixed in this
|
||||||
|
release. It was introduced in release 0.8.<br />
|
||||||
|
Added a method to class Image to check which types of metadata are supported.<br />
|
||||||
|
See the <a title="ChangeLog" href="changelog.html">changelog</a> and this
|
||||||
|
<a title="Exiv2 bug #451" href="http://dev.exiv2.org/issues/show/451">bug report</a> for details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>26-Jan-2006</date>
|
||||||
|
<title>Exiv2 0.9 released</title>
|
||||||
|
<abstract>Adds Canon CRW write support and new utility features to
|
||||||
|
manipulate image file timestamps and fix Nikon ISO settings.
|
||||||
|
</abstract>
|
||||||
|
<desc>Completed Canon CRW support, tags can now also be written to Canon
|
||||||
|
CRW images. See the documentation for the list of Exif tags that can be
|
||||||
|
accessed in CRW files.<br />
|
||||||
|
Added new options to the utility to deal with image file timestamps and
|
||||||
|
to make the ISO setting of Nikon cameras accessible to applications
|
||||||
|
that don't know Nikon makernotes by copying it from the makernote
|
||||||
|
to the regular Exif ISO tag.<br />
|
||||||
|
The <a title="Changelog" href="changelog.html">changelog</a> has the
|
||||||
|
complete list.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>19-Nov-2005</date>
|
||||||
|
<title>Exiv2 0.8 released</title>
|
||||||
|
<abstract>Canon CRW read support, bugfixes and other incremental
|
||||||
|
improvements. Added a manual page for the utility.
|
||||||
|
</abstract>
|
||||||
|
<desc>The Canon RAW support is currently read-only. Canon THM is also
|
||||||
|
supported, since that is the same as JPEG. Note that THM files contain
|
||||||
|
all the Exif stuff, CRW have only a few tags. Other improvements are
|
||||||
|
mostly bugfixes to make Exiv2 handle various (more or less) exceptional
|
||||||
|
situations more gracefully.<br />
|
||||||
|
For application developers, there is a new precompiler define to
|
||||||
|
suppress all output from the library and a small script,
|
||||||
|
exiv2-config, to help with the compilation of your applications.<br />
|
||||||
|
As always, check out the <a title="Changelog" href="changelog.html">changelog</a>
|
||||||
|
for details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>09-Oct-2005</date>
|
||||||
|
<title>Vizrea agreement</title>
|
||||||
|
<abstract>A license agreement allows Vizrea to use Exiv2 in their
|
||||||
|
proprietary products. In return, they will make their changes available
|
||||||
|
to the free version.
|
||||||
|
</abstract>
|
||||||
|
<desc>I've recently entered into an agreement with
|
||||||
|
<a title="Vizrea" href="http://www.vizrea.com">Vizrea</a>,
|
||||||
|
under which the company can use most of the Exiv2 library (except for
|
||||||
|
the Nikon lens table and related code) in their proprietary products
|
||||||
|
under terms which are different from those of the GPL.
|
||||||
|
In return Vizrea will assign the copyright of their changes to me and
|
||||||
|
contribute them back to the free version.<br />
|
||||||
|
Therefore, if this deal is successful, the free version of Exiv2
|
||||||
|
will benefit from the code contributed under the agreement. Since
|
||||||
|
Brad, who wrote major portions of the existing library is with
|
||||||
|
Vizrea, this will hopefully allow him to continue to spend time
|
||||||
|
adding good stuff to Exiv2.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>15-Jun-2005</date>
|
||||||
|
<title>Exiv2 0.7 released</title>
|
||||||
|
<abstract>Design changes in the library, new Olympus, Panasonic and basic
|
||||||
|
Sony makernotes and updated Canon and Nikon makernotes.
|
||||||
|
</abstract>
|
||||||
|
<desc>The inside-out design change made class Exiv2::Image the
|
||||||
|
top-level class of the library. This is the basis for support of
|
||||||
|
other file formats (however, Exiv2 still only supports Jpeg for
|
||||||
|
now). As a result, the C++ interface changed fundamentally in the
|
||||||
|
way how metadata is accessed. Existing programs will need to be
|
||||||
|
updated (see the examples). Thanks to the new I/O abstraction layer,
|
||||||
|
it is now possible to access images in memory directly.<br />
|
||||||
|
Additional makernotes from Olympus, Panasonic and Sony cameras
|
||||||
|
are recognized and the Canon and Nikon makernotes have been updated.<br />
|
||||||
|
Exif tags now have a default type, it works like the existing Iptc
|
||||||
|
default type.<br />
|
||||||
|
See the <a title="Changelog" href="changelog.html">changelog</a> for details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>06-Mar-2005</date>
|
||||||
|
<title>Exiv2 0.6.2 released</title>
|
||||||
|
<abstract>New utility features, some bugfixes, and an improved build environment.
|
||||||
|
</abstract>
|
||||||
|
<desc>Utility: New -M option to specify modify commands directly on the
|
||||||
|
command line, new -l option for a directory to/from which to extract/import
|
||||||
|
files.<br />
|
||||||
|
Bugfixes: Support for non-standard IFDs (as created by e.g., GraphicConverter
|
||||||
|
for Mac), proper non-intrusive writing for the utility's modify command.<br />
|
||||||
|
Build environment: Libtool support for correct (shared) library generation
|
||||||
|
on various platforms, improved installation routine.<br />
|
||||||
|
The <a title="Changelog" href="changelog.html">changelog</a> has the details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>17-Jan-2005</date>
|
||||||
|
<title>Exiv2 0.6.1 released</title>
|
||||||
|
<abstract>Fixes a bug that could lose the thumbnail when Exif
|
||||||
|
tags were modified and adds metadata write support to the utility.
|
||||||
|
</abstract>
|
||||||
|
<desc>Bugfix: The Exif thumbnail is no more lost when Exif data is modified
|
||||||
|
in an "intrusive" manner, e.g., by adding new tags. This was a bug
|
||||||
|
introduced with release 0.6. <br/>
|
||||||
|
Feature: The new modify option adds metadata write support to the Exiv2
|
||||||
|
utility. <br/>As usual, the
|
||||||
|
<a title="Changelog" href="changelog.html">changelog</a> has more details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>09-Jan-2005</date>
|
||||||
|
<title>Support forum added</title>
|
||||||
|
<abstract>There is now a Yahoo! group for Exiv2 help and discussions.
|
||||||
|
</abstract>
|
||||||
|
<desc>There have been more queries recently which may be of interest for
|
||||||
|
other users. Going forward, please direct your questions to the new
|
||||||
|
<a title="Exiv2 support" href="support.html">forum</a>.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>12-Dec-2004</date>
|
||||||
|
<title>Exiv2 0.6 released</title>
|
||||||
|
<abstract>More IPTC functions in the utility, library support for the
|
||||||
|
creation of all Exif metadata from scratch and more.
|
||||||
|
</abstract>
|
||||||
|
<desc>This is a maintenance release containing numerous smaller
|
||||||
|
improvements and fixes. The Exiv2 utility now also deletes,
|
||||||
|
extracts, and re-inserts IPTC data and Jpeg comments from/into Jpeg
|
||||||
|
files. The library now supports creation of all Exif metadata from
|
||||||
|
scratch, including makernote tags and thumbnails. In addition, Exif
|
||||||
|
as well as IPTC metadata with unknown tag names can be added and
|
||||||
|
manipulated just like known tags. See the <a title="Changelog"
|
||||||
|
href="changelog.html">changelog</a> for more details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>30-Oct-2004</date>
|
||||||
|
<title>Source online</title>
|
||||||
|
<abstract>The Exiv2 source code repository and a public bug tracking
|
||||||
|
system are now online.
|
||||||
|
</abstract>
|
||||||
|
<desc>Brad Schick, author of <a title="Robot Battle"
|
||||||
|
href="http://www.robotbattle.com/index.php">Robot Battle</a>, now
|
||||||
|
hosts the Exiv2 source code repository. He converted it from CVS to
|
||||||
|
Subversion and provides a web interface, public bug tracking system
|
||||||
|
and a nifty live list of the 50 last commits. Thanks! Check out the
|
||||||
|
<a title="Development" href="download.html#devel">development
|
||||||
|
section</a> on the download page.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>13-Sep-2004</date>
|
||||||
|
<title>Exiv2 0.5 released</title>
|
||||||
|
<abstract>IPTC metadata read and write support, an autoconf configure
|
||||||
|
script, MSVC project files.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release adds support for IPTC metadata. IPTC datasets can
|
||||||
|
now be manipulated (read and written) similar to Exif metadata.
|
||||||
|
In connection with the IPTC feature, the existing Metadatum Key and
|
||||||
|
Value concept was enhanced and the Jpeg file access code was revamped.
|
||||||
|
The exiv2 utility has a new print option to show the IPTC metadata of
|
||||||
|
a Jpeg image.
|
||||||
|
Also, this release adds a configure script and MSVC project files
|
||||||
|
(but no libtool support yet).
|
||||||
|
See the <a title="Changelog" href="changelog.html">changelog</a> for
|
||||||
|
details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>13-Sep-2004</date>
|
||||||
|
<title>Exif keys changed</title>
|
||||||
|
<abstract>With release 0.5 all Exif key values in existing applications
|
||||||
|
need to be updated.
|
||||||
|
</abstract>
|
||||||
|
<desc>Starting with release 0.5 the keys used to identify
|
||||||
|
<a title="Exif and MakerNote tags" href="metadata.html">Exif tags</a>
|
||||||
|
are of the form '<i>Exif</i>.groupName.tagName' to be consistent
|
||||||
|
with the new IPTC keys. Existing programs need to be updated
|
||||||
|
accordingly. Since the old keys are plain C++ strings, the
|
||||||
|
compiler cannot detect the change. However, it will tell you to use
|
||||||
|
the new classes Key and ExifKey in the critical regions of the code.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>03-Jul-2004</date>
|
||||||
|
<title>Exiv2 0.4 released</title>
|
||||||
|
<abstract>Support for Nikon makernotes, improved handling of corrupt IFDs,
|
||||||
|
more intuitive command line parsing for the Exiv2 utility and more.
|
||||||
|
</abstract>
|
||||||
|
<desc>This release adds support for three different Nikon makernote
|
||||||
|
formats to the library. The generalised IfdMakerNote interface can
|
||||||
|
accomodate more makernote oddities and allows for programmatic
|
||||||
|
detection of the makernote format. The library now knows how to
|
||||||
|
deal with broken IFDs. The Exiv2 utility uses a more intuitive and
|
||||||
|
less rigid command line parsing logic. See the <a title="Changelog"
|
||||||
|
href="changelog.html">changelog</a>
|
||||||
|
for details.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
<newsitem>
|
||||||
|
<date>03-Jul-2004</date>
|
||||||
|
<title>Nikon tags added</title>
|
||||||
|
<abstract>Tags for three different Nikon makernote formats are now supported
|
||||||
|
and available on the website.
|
||||||
|
</abstract>
|
||||||
|
<desc>Tags for three different Nikon makernote formats are now available
|
||||||
|
<a title="Nikon makernote tags" href="tags-nikon.html">here</a>.
|
||||||
|
</desc>
|
||||||
|
</newsitem>
|
||||||
|
</news>
|
@ -0,0 +1,189 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header1__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Exiv2 utility sample output</h2>
|
||||||
|
|
||||||
|
<img style="border:1px solid #CCCCCC;" src="include/img_1771.jpg" height="360" width="480" title="img_1771.jpg (32764 Bytes)" alt="Sample image with the Exif data shown below">
|
||||||
|
|
||||||
|
<p>By default, the utility prints a summary of the Exif information</p>
|
||||||
|
|
||||||
|
<div class="fragment"><pre>
|
||||||
|
<span class="stringliteral">$ exiv2 img_1771.jpg</span>
|
||||||
|
|
||||||
|
__sample-p__
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>With the <code>-pt</code> option, the utility prints out all Exif information as interpreted (translated) values. Alternatively, <code>-pv</code> prints the plain Exif data values.</p>
|
||||||
|
|
||||||
|
<div class="fragment"><pre>
|
||||||
|
<span class="stringliteral">$ exiv2 -pt img_1771.jpg</span>
|
||||||
|
|
||||||
|
__sample-pt__
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Short description of the actions and options supported by the Exiv2 utility
|
||||||
|
(see the <a href="manpage.html" title="Exiv2 man page">man page</a> for details)</p>
|
||||||
|
|
||||||
|
<div class="fragment"><a name="usage"></a><pre>
|
||||||
|
<span class="stringliteral">$ exiv2 -h</span>
|
||||||
|
|
||||||
|
__sample-h__
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p><a name="modify">You can modify any Exif or IPTC metadata using modify-commands from a file (<code>-m</code> option) or directly from the command line (<code>-M</code> option). Multiple <code>-M</code> and <code>-m</code> directives can be combined. Here is a sample command file for the modify option (lines starting with <code>#</code> are comments)</a></p>
|
||||||
|
|
||||||
|
<div class="fragment"><pre>
|
||||||
|
<span class="comment"># Sample Exiv2 command file</span>
|
||||||
|
# -------------------------
|
||||||
|
#
|
||||||
|
# $ exiv2 -m cmd.txt file ...
|
||||||
|
#
|
||||||
|
# to apply the commands in cmd.txt to each file. Alternatively, commands can be
|
||||||
|
# run from the command line directly, without a command file:
|
||||||
|
#
|
||||||
|
# $ exiv2 -M"add Iptc.Application2.Credit String mee too!" file ...
|
||||||
|
#
|
||||||
|
# Note the quotes. Multiple -m and -M options are allowed and can be combined.
|
||||||
|
#
|
||||||
|
# Command file format
|
||||||
|
# -------------------
|
||||||
|
# Empty lines and lines starting with # are ignored
|
||||||
|
# Each remaining line is a command. The format for command lines is
|
||||||
|
# <cmd> <key> [[<type>] <value>]
|
||||||
|
# cmd = set|add|del
|
||||||
|
# set will set the value of an existing tag of the given key or add a tag
|
||||||
|
# add will add a tag (unless the key is a non-repeatable IPTC key)
|
||||||
|
# del will delete a tag
|
||||||
|
# key = Exiv2 Exif or IPTC key
|
||||||
|
# type =
|
||||||
|
# Byte|Ascii|Short|Long|Rational|Undefined|SShort|SLong|SRational|Comment
|
||||||
|
# for Exif keys, and
|
||||||
|
# String|Date|Time|Short|Undefined for IPTC keys
|
||||||
|
# The format for IPTC Date values is YYYY-MM-DD (year, month, day) and
|
||||||
|
# for IPTC Time values it is HH:MM:SS±HH:MM where HH:MM:SS refers to local
|
||||||
|
# hour, minute and seconds and ±HH:MM refers to hours and minutes ahead or
|
||||||
|
# behind Universal Coordinated Time.
|
||||||
|
# A default type is used if none is explicitely given. The default type
|
||||||
|
# is determined based on the key.
|
||||||
|
# value
|
||||||
|
# The remaining text on the line is the value. It can optionally be enclosed in
|
||||||
|
# double quotes ("value")
|
||||||
|
#
|
||||||
|
|
||||||
|
add Iptc.Application2.Credit String "mee too! (1)"
|
||||||
|
add Iptc.Application2.Credit mee too! (2)
|
||||||
|
del Iptc.Application2.Headline
|
||||||
|
|
||||||
|
set Iptc.Application2.Headline Filename
|
||||||
|
|
||||||
|
add Exif.Image.WhitePoint Short 32 12 4 5 6
|
||||||
|
|
||||||
|
set Exif.Image.DateTime Ascii "Zwanzig nach fuenf"
|
||||||
|
set Exif.Image.Artist Ascii nobody
|
||||||
|
set Exif.Image.Artist "Vincent van Gogh"
|
||||||
|
|
||||||
|
set Exif.Photo.UserComment Comment charset=Ascii This is an ASCII Exif comment
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p><a name="xmp">The following commands are for XMP tags</a>,
|
||||||
|
the <a href="example5.html#output">result</a>
|
||||||
|
is the same as that of Example 5.</p>
|
||||||
|
|
||||||
|
<div class="fragment"><pre>
|
||||||
|
<span class="comment"># Sample Exiv2 command file for XMP tags</span>
|
||||||
|
# --------------------------------------
|
||||||
|
|
||||||
|
# Set basic properties. Exiv2 uses the value type of the XMP specification
|
||||||
|
# for the property, if it is not specified. The default XMP value type
|
||||||
|
# for unknown properties is a simple text value.
|
||||||
|
|
||||||
|
# A simple text property.
|
||||||
|
set Xmp.dc.source xmpsample.cpp
|
||||||
|
|
||||||
|
# An array item (unordered array).
|
||||||
|
set Xmp.dc.subject "Palmtree"
|
||||||
|
|
||||||
|
# Add a 2nd array item
|
||||||
|
set Xmp.dc.subject "Rubbertree"
|
||||||
|
|
||||||
|
# A language alternative (without a default)
|
||||||
|
set Xmp.dc.title lang=en-US Sunset on the beach
|
||||||
|
set Xmp.dc.title lang=de-DE Sonnenuntergang am Strand
|
||||||
|
|
||||||
|
# Any properties can be set provided the namespace is known.
|
||||||
|
set Xmp.dc.one -1
|
||||||
|
set Xmp.dc.two 3.1415
|
||||||
|
set Xmp.dc.three 5/7
|
||||||
|
set Xmp.dc.four 255
|
||||||
|
set Xmp.dc.five 256
|
||||||
|
set Xmp.dc.six false
|
||||||
|
set Xmp.dc.seven Seven
|
||||||
|
|
||||||
|
# The value type can be specified. Exiv2 has support for a limited number
|
||||||
|
# of specific XMP types with built-in types: The basic XmpText, array
|
||||||
|
# types XmpAlt (alternative array), XmpBag (unordered array), XmpSeq
|
||||||
|
# (ordered array) and language alternatives LangAlt.
|
||||||
|
|
||||||
|
# Simple text property with explicitly specified value type
|
||||||
|
set Xmp.dc.format XmpText "image/jpeg"
|
||||||
|
|
||||||
|
# An ordered array
|
||||||
|
set Xmp.dc.creator XmpSeq "1) The first creator"
|
||||||
|
set Xmp.dc.creator "2) The second creator"
|
||||||
|
set Xmp.dc.creator "3) And another one"
|
||||||
|
|
||||||
|
# A language alternative. The default entry of a langauge alternative
|
||||||
|
# doesn't need a language qualifier.
|
||||||
|
set Xmp.dc.description LangAlt lang=de-DE Hallo, Welt
|
||||||
|
set Xmp.dc.description LangAlt Hello, World
|
||||||
|
|
||||||
|
# According to the XMP specification, Xmp.tiff.ImageDescription is an
|
||||||
|
# alias for Xmp.dc.description. Exiv2 treats an alias just like any
|
||||||
|
# other property.
|
||||||
|
set Xmp.tiff.ImageDescription TIFF image description
|
||||||
|
set Xmp.tiff.ImageDescription lang=de-DE TIFF Bildbeschreibung
|
||||||
|
|
||||||
|
# Register a namespace which Exiv2 doesn't know yet with a prefix.
|
||||||
|
reg ns myNamespace/
|
||||||
|
|
||||||
|
# There are no built-in Exiv2 value types for structures, qualifiers and
|
||||||
|
# nested types. However, these can be added by using an XmpText value and a
|
||||||
|
# path as the key.
|
||||||
|
|
||||||
|
# Add a structure
|
||||||
|
set Xmp.xmpDM.videoFrameSize/stDim:w 16
|
||||||
|
set Xmp.xmpDM.videoFrameSize/stDim:h 9
|
||||||
|
set Xmp.xmpDM.videoFrameSize/stDim:unit inch
|
||||||
|
|
||||||
|
# Add an element with a qualifier (using the namespace registered earlier)
|
||||||
|
set Xmp.dc.publisher James Bond
|
||||||
|
set Xmp.dc.publisher/?ns:role secret agent
|
||||||
|
|
||||||
|
# Add a qualifer to an array element of Xmp.dc.creator (added above)
|
||||||
|
set Xmp.dc.creator[2]/?ns:role programmer
|
||||||
|
|
||||||
|
# Add an array of structures. First set a text property with just the
|
||||||
|
# array type. (Note: this is not the same as creating an XmpBag property.)
|
||||||
|
set Xmp.xmpBJ.JobRef XmpText type=Bag
|
||||||
|
|
||||||
|
# Then set the array items. Each of them is a structure with two elements.
|
||||||
|
set Xmp.xmpBJ.JobRef[1]/stJob:name XmpText Birthday party
|
||||||
|
set Xmp.xmpBJ.JobRef[1]/stJob:role XmpText Photographer
|
||||||
|
|
||||||
|
set Xmp.xmpBJ.JobRef[2]/stJob:name Wedding ceremony
|
||||||
|
set Xmp.xmpBJ.JobRef[2]/stJob:role Best man
|
||||||
|
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,59 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Canon MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Canon cameras. These tags are defined by Exiv2 in accordance with <a href="makernote.html#R2">[2]</a>.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Canon__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Canon Camera Settings Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__CanonCs__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Canon Shot Info Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__CanonSi__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Canon Panorama Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__CanonPa__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Canon Custom Function Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__CanonCf__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Canon Picture Info Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__CanonPi__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Canon File Info Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__CanonFi__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,22 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Fujifilm MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Fujifilm cameras. These tags are defined by Exiv2 in accordance with <a href="makernote.html#R1">[1]</a>.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Fujifilm__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,41 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Minolta MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Minolta cameras.
|
||||||
|
These Exiv2 tags are based on <a href="makernote.html#R5">[5]</a>,
|
||||||
|
<a href="makernote.html#R9">[9]</a> and <a href="makernote.html#R10">[10]</a>.</p>
|
||||||
|
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Minolta__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Minolta Camera Settings (tags from older and newer cameras)</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
__MinoltaCsNew__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Minolta 5D Camera Settings</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
__MinoltaCs5D__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Minolta 7D Camera Settings</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
__MinoltaCs7D__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,198 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<p>There are three different Nikon MakerNote formats. Exiv2 will automatically detect the correct format for the Exif data from a particular Nikon camera model.</p>
|
||||||
|
<h2>Nikon (format 1) MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Nikon cameras, such as the E990 and D1. These tags are defined by Exiv2 in accordance with <a href="makernote.html#R3">[3]</a>.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Nikon1__
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h2>Nikon (format 2) MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Nikon cameras, including the E700, E800, E900, E900S, E910, E950. These tags are defined by Exiv2 in accordance with <a href="makernote.html#R1">[1]</a>.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Nikon2__
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h2>Nikon (format 3) MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with newer Nikon cameras, e.g., the E5400, SQ, D2H, D70.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Nikon3__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Vibration Reduction Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonVr__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Picture Control Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonPc__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon World Time Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonWt__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon ISO Info Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonIi__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Auto Focus Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonAf__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Auto Focus 2 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonAf2__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon AF Fine Tune Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonAFT__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon File Info Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonFi__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Multi Exposure Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonMe__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Flash Info 1 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonFl1__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Flash Info 2 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonFl2__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Flash Info 3 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonFl3__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Shot Info D80 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonSiD80__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Shot Info D40 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonSiD40__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Shot Info D300a Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonSiD300a__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Shot Info D300b Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonSiD300b__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Shot Info Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonSi01xx__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Color Balance 1 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonCb1__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Color Balance 2 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonCb2__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Color Balance 2a Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonCb2a__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Color Balance 2b Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonCb2b__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Color Balance 3 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonCb3__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Color Balance 4 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonCb4__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Lens Data 1 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonLd1__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Lens Data 2 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonLd2__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Nikon Lens Data 3 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__NikonLd3__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,72 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Olympus MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Olympus cameras. References: <a href="makernote.html#R1">[1]</a>, <a href="makernote.html#R9">[9]</a>, and <a href="makernote.html#R10">[10]</a>.</p>
|
||||||
|
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Olympus__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Olympus Camera Settings Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__OlympusCs__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Olympus Equipment Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__OlympusEq__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Olympus Raw Development Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__OlympusRd__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Olympus Raw Development 2 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__OlympusRd2__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Olympus Image Processing Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__OlympusIp__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Olympus Focus Info Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__OlympusFi__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Olympus FE Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__OlympusFe1__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Olympus Raw Info Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__OlympusRi__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,24 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Panasonic MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Panasonic cameras. References:
|
||||||
|
<a href="makernote.html#R8">[8]</a>, <a href="makernote.html#R9">[9]</a>, and <a href="makernote.html#R10">[10]</a>.</p>
|
||||||
|
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Panasonic__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,25 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Pentax MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Pentax cameras.
|
||||||
|
The same tags are found in Pentax native DNG makernotes with group <i>PentaxDng</i>.
|
||||||
|
Reference: <a href="makernote.html#R10">[10]</a>.</p>
|
||||||
|
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Pentax__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,22 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Samsung MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Samsung cameras.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Samsung2__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,22 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Sigma/Foveon MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Sigma/Foveon cameras. These tags are defined by Exiv2 in accordance with <a href="makernote.html#R7">[7]</a>.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Sigma__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,65 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Sony MakerNote Tags defined in Exiv2</h2>
|
||||||
|
|
||||||
|
<p>Tags found in the MakerNote of images taken with Sony cameras.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Sony1__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Sony Minolta Tags</h3>
|
||||||
|
<p>These are the same tags as found in the Minolta MakerNote.
|
||||||
|
In Sony images the group name is <b><code>SonyMinolta</code></b>.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__SonyMinolta__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Sony Camera Settings Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Sony1Cs__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Sony Camera Settings 2 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Sony1Cs2__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Sony Minolta Camera Settings Tags</h3>
|
||||||
|
<p>These are the same tags as the Minolta Camera Settings in the Minolta MakerNote.
|
||||||
|
In Sony images the group name is <b><code>Sony1MltCsOld</code></b> or <b><code>Sony1MltCsNew</code></b>.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Sony1MltCsOld__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Sony Minolta Camera Settings 7D Tags</h3>
|
||||||
|
<p>These are the same tags as the Minolta 7D Camera Settings in the Minolta MakerNote.
|
||||||
|
In Sony images the group name is <b><code>Sony1MltCs7D</code></b>.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Sony1MltCs7D__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h3>Sony Minolta Camera Settings A100 Tags</h3>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Sony1MltCsA100__
|
||||||
|
<br>
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Microsoft Photo 1.2 schema</h2>
|
||||||
|
<p>The Microsoft Photo 1.2 schema provides a set of properties for image regions.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.MP.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.microsoft.com/photo/1.2/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>MP</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://msdn.microsoft.com/en-us/library/ee719905%28VS.85%29.aspx" title="People Tagging Overview">People Tagging Overview</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_MP__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Microsoft Photo RegionInfo schema</h2>
|
||||||
|
<p>The Microsoft Photo RegionInfo 1.2 schema provides a set of properties for region info.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.MPRI.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.microsoft.com/photo/1.2/t/RegionInfo#</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>MPRI</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://msdn.microsoft.com/en-us/library/ee719905%28VS.85%29.aspx" title="People Tagging Overview">People Tagging Overview</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_MPRI__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Microsoft Photo Region schema</h2>
|
||||||
|
<p>The Microsoft Photo Region 1.2 schema provides a set of properties for image regions.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.MPReg.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.microsoft.com/photo/1.2/t/Region#</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>MPReg</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://msdn.microsoft.com/en-us/library/ee719905%28VS.85%29.aspx" title="People Tagging Overview">People Tagging Overview</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_MPReg__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Microsoft Photo Schema</h2>
|
||||||
|
<p>This schema specifies XMP properties used by Microsoft.
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.MicrosoftPhoto.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.microsoft.com/photo/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>MicrosoftPhoto</code></b></li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_MicrosoftPhoto__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,28 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Exif Schema for Additional Exif Properties</h2>
|
||||||
|
<p>The following table lists additional XMP properties that describe the equipment used to produce
|
||||||
|
Exif data.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.aux.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/exif/1.0/aux/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>aux</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_aux__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Camera Raw Schema</h2>
|
||||||
|
<p>This schema specifies XMP properties associated with image files produced in camera raw mode.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.crs.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/camera-raw-settings/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>crs</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_crs__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Dublin Core Schema</h2>
|
||||||
|
<p>The Dublin Core schema provides a set of commonly used XMP properties.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.dc.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://purl.org/dc/elements/1.1/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>dc</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_dc__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>digiKam Photo Management Schema</h2>
|
||||||
|
<p>This schema specifies XMP properties used by digiKam.
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.digiKam.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://www.digikam.org/ns/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>digiKam</code></b></li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_digiKam__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,35 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Exif Schema for Exif-specific Properties</h2>
|
||||||
|
<p>The following table lists the XMP properties defined solely by Exif.</p>
|
||||||
|
<p>Note: A number of Exif 2.2 properties are not included in XMP. These are generally
|
||||||
|
properties that relate directly to the image stream, or that are of little use without access
|
||||||
|
to the image stream. A general XMP principle is that XMP metadata should have value
|
||||||
|
in and of itself, separate from the primary file content. The omitted properties include:
|
||||||
|
StripOffsets, RowsPerStrip, StripByteCounts, JPEGInterchangeFormat, and
|
||||||
|
JPEGInterchangeFormatLength.</p>
|
||||||
|
<p>Note: Properties beginning with "GPS" are GPS properties that are also used by DIG-35 and
|
||||||
|
are part of the JPEG-2000 standard.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.exif.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/exif/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>exif</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_exif__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,28 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Microsoft Expression Media schema</h2>
|
||||||
|
<p>This is the Microsoft badged version of the
|
||||||
|
<a href="tags-xmp-mediapro.html" title="iView Media Pro schema">iView Media Pro schema</a>.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.expressionmedia.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.microsoft.com/expressionmedia/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>expressionmedia</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: ?</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_expressionmedia__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,28 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>IPTC Core schema</h2>
|
||||||
|
<p>This schema specifies the IPTC Core XMP properties.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.iptc.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>Iptc4xmpCore</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.iptc.org/std/Iptc4xmpCore/1.0/specification/Iptc4xmpCore_1.0-spec-XMPSchema_8.pdf" title="IPTC Core Schema for XMP">"IPTC Core" Schema for XMP</a></p><p>Note: Exiv2 uses <b><code>iptc</code></b> (rather than <code>Iptc4xmpCore</code>) as the group name for keys of IPTC Core schema properties.</p>
|
||||||
|
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_iptc__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,31 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>IPTC Extension schema</h2>
|
||||||
|
<p>This schema specifies the IPTC Extension XMP properties. The IPTC
|
||||||
|
Extension schema extends and complements the IPTC Core schema by a set
|
||||||
|
of more granular properties and further specialized rights related
|
||||||
|
properties from the PLUS metadata schema.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.iptcExt.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://iptc.org/std/Iptc4xmpExt/2008-02-29/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>Iptc4xmpExt</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.iptc.org/std/photometadata/2008/specification/IPTC-PhotoMetadata-2008_2.pdf" title="IPTC Standard Photo Metadata 2008">IPTC Photo Metadata 2008</a> standard</p>
|
||||||
|
<p>Note: Exiv2 uses <b><code>iptcExt</code></b> (rather than <code>Iptc4xmpExt</code>) as the group name for keys of IPTC Extension schema properties.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_iptcExt__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>KDE Image Program Interface schema</h2>
|
||||||
|
<p>KDE Image Program Interface schema tags, used by digiKam kipi-plugins.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.kipi.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://www.digikam.org/ns/kipi/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>kipi</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: ?</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_kipi__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,28 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>iView Media Pro schema</h2>
|
||||||
|
<p>iView Media Pro schema tags. See also its successor, the
|
||||||
|
<a href="tags-xmp-expressionmedia.html" title="Microsoft Expression Media schema">Microsoft Expression Media schema</a>.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.mediapro.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.iview-multimedia.com/mediapro/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>mediapro</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: ?</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_mediapro__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Metadata Working Group Regions schema</h2>
|
||||||
|
<p>The Metadata Working Group's schema for image region metadata.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.mwg-rs.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://www.metadataworkinggroup.com/schemas/regions/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>mwg-rs</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf" title="Guidelines for Handling Image Metadata">Guidelines for Handling Image Metadata</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_mwg-rs__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Adobe PDF schema</h2>
|
||||||
|
<p>This schema specifies XMP properties used with Adobe PDF documents.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.pdf.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/pdf/1.3/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>pdf</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_pdf__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Photoshop Schema</h2>
|
||||||
|
<p>This schema specifies XMP properties used by Adobe Photoshop.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.photoshop.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/photoshop/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>photoshop</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_photoshop__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,29 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>PLUS License Data Format schema</h2>
|
||||||
|
<p>The PLUS License Data Format ("LDF") is an ordered group of fields available
|
||||||
|
for optional use in embedding and reading image license metadata in digital
|
||||||
|
files and other documents.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.plus.<Property></code></b></li>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.useplus.org/ldf/xmp/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>plus</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://ns.useplus.org/go.ashx" title="PLUS Technical Specification">PLUS Technical Specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_plus__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,16 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,28 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Exif Schema for TIFF Properties</h2>
|
||||||
|
<p>The following table lists the XMP properties for TIFF-derived data. Only those TIFF properties that
|
||||||
|
are mentioned in the EXIF 2.2 specification are included here.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.tiff.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/tiff/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>tiff</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_tiff__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>XMP Basic Schema</h2>
|
||||||
|
<p>The XMP Basic Schema contains XMP properties that provide basic descriptive information.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.xmp.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xap/1.0/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>xmp</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_xmp__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>XMP Basic Job Ticket Schema</h2>
|
||||||
|
<p>The following XMP schema describes very simple workflow or job information.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.xmpBJ.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xap/1.0/bj/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>xmpBJ</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_xmpBJ__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>XMP Dynamic Media Schema</h2>
|
||||||
|
<p>This schema specifies XMP properties used by the Adobe dynamic media group.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.xmpDM.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xmp/1.0/DynamicMedia/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>xmpDM</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_xmpDM__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,34 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>XMP Media Management Schema</h2>
|
||||||
|
<p>The XMP Media Management Schema is primarily for use by digital asset management (DAM) systems.</p>
|
||||||
|
<p>The following XMP properties are "owned" by the DAM system and should be set by applications
|
||||||
|
under their direction; they should not be used by unmanaged files: xmpMM:ManagedFrom,
|
||||||
|
xmpMM:Manager, xmpMM:ManageTo, xmpMM:ManageUI, xmpMM:ManagerVariant.</p>
|
||||||
|
<p>The following properties are owned by the DAM system for managed files, but can also be
|
||||||
|
used by applications for unmanaged files: xmpMM:DerivedFrom, xmpMM:DocumentID,
|
||||||
|
xmpMM:RenditionClass, xmpMM:RenditionParams, xmpMM:VersionID, xmpMM:Versions.</p>
|
||||||
|
<p>The xmpMM:History property is always owned by the application.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.xmpMM.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xap/1.0/mm/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>xmpMM</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_xmpMM__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,29 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>XMP Rights Management Schema</h2>
|
||||||
|
<p>This schema includes XMP properties related to rights management. These properties specify
|
||||||
|
information regarding the legal restrictions associated with a resource.<br>
|
||||||
|
Note: XMP is not a rights-enforcement mechanism.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.xmpRights.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xap/1.0/rights/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>xmpRights</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_xmpRights__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,27 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar4__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>XMP Paged-Text Schema</h2>
|
||||||
|
<p>The Paged-Text schema is used for XMP properties for text appearing on a page in a document.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Exiv2 keys are <b><code>Xmp.xmpTPg.<Property></code></b>
|
||||||
|
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xap/1.0/t/pg/</code></b></li>
|
||||||
|
<li>The preferred schema namespace prefix is <b><code>xmpTPg</code></b></li>
|
||||||
|
</ul>
|
||||||
|
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__xmp_xmpTPg__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,23 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header2__
|
||||||
|
<body>
|
||||||
|
__sidebar2__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>Exif Tags supported by Exiv2</h2>
|
||||||
|
|
||||||
|
<p>These are the Exif tags as defined in the <a title="The Exif 2.2 standard (PDF)" href="http://www.exif.org/Exif2-2.PDF">Exif 2.2 standard</a>.</p>
|
||||||
|
<p>IFD1 tags are not listed seperately. All IFD0 tags may also be present in IFD1, according to the standard. The second part of the Exiv2 key of an IFD1 tag is <i>Thumbnail</i> (instead of <i>Image</i>), the other two parts of the key are the same as for IFD0 tags.</p>
|
||||||
|
<p>Click on a column header to sort the table.</p>
|
||||||
|
|
||||||
|
__Exif__
|
||||||
|
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1" ?> <!--*- sgml -*-->
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||||
|
<xsl:output method="html" />
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
<xsl:template match="news">
|
||||||
|
<div id="latest">
|
||||||
|
<h2>Latest News</h2>
|
||||||
|
<ul id="news">
|
||||||
|
<xsl:apply-templates select="newsitem[position()<5]" />
|
||||||
|
<xsl:if test="newsitem[last()>4]">
|
||||||
|
<li>
|
||||||
|
<span class="newstitle"><a href="whatsnew.html#item5">More news...</a></span>
|
||||||
|
</li>
|
||||||
|
</xsl:if>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<xsl:comment> closes latest </xsl:comment>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
<xsl:template match="newsitem">
|
||||||
|
<li>
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">
|
||||||
|
<xsl:value-of select="concat('whatsnew.html#item', position())" />
|
||||||
|
</xsl:attribute>
|
||||||
|
<span class="newstitle">
|
||||||
|
<xsl:value-of select="title" />
|
||||||
|
</span>
|
||||||
|
<br />
|
||||||
|
<span class="newsabstract">
|
||||||
|
<xsl:value-of select="abstract" />
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
</xsl:stylesheet>
|
@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1" ?> <!--*- sgml -*-->
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||||
|
<xsl:output method="xml" indent="yes" />
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
<xsl:template match="news">
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>What's new in Exiv2</title>
|
||||||
|
<link>http://www.exiv2.org/</link>
|
||||||
|
<description>News from the Exiv2 project.</description>
|
||||||
|
<lastBuildDate>__lastBuildDate__</lastBuildDate>
|
||||||
|
<language>en-us</language>
|
||||||
|
<atom:link href="http://www.exiv2.org/rss.xml" rel="self" type="application/rss+xml" />
|
||||||
|
<xsl:apply-templates select="newsitem" />
|
||||||
|
</channel>
|
||||||
|
</rss>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
<xsl:template match="newsitem">
|
||||||
|
<item>
|
||||||
|
<title><xsl:value-of select="title" /></title>
|
||||||
|
<link>http://exiv2.org/whatsnew.html#item<xsl:value-of select="position()" /></link>
|
||||||
|
<guid>http://exiv2.org/whatsnew.html#item<xsl:value-of select="position()" /></guid>
|
||||||
|
<pubDate><xsl:value-of select="date" /></pubDate>
|
||||||
|
<description><xsl:value-of select="abstract" /></description>
|
||||||
|
</item>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
</xsl:stylesheet>
|
@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1" ?> <!--*- sgml -*-->
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||||
|
<xsl:output method="html" />
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
<xsl:template match="news">
|
||||||
|
<table width="100%" border="0" cellpadding="4" cellspacing="0">
|
||||||
|
<colgroup>
|
||||||
|
<col width="90" />
|
||||||
|
<col />
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<xsl:apply-templates select="newsitem" />
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
<xsl:template match="newsitem[position() mod 2 = 0]">
|
||||||
|
<xsl:call-template name="data-row">
|
||||||
|
<xsl:with-param name="rowClass" select="'evencolor'" />
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
<xsl:template match="newsitem[position() mod 2 = 1]">
|
||||||
|
<xsl:call-template name="data-row">
|
||||||
|
<xsl:with-param name="rowClass" select="'oddcolor'" />
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
<xsl:template match="desc">
|
||||||
|
<xsl:copy-of select="text()|*" />
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
<xsl:template name="data-row">
|
||||||
|
<xsl:param name="rowClass" />
|
||||||
|
<tr><xsl:attribute name="class"><xsl:value-of select="$rowClass" /></xsl:attribute>
|
||||||
|
<td valign="top"><xsl:value-of select="date" /></td>
|
||||||
|
<td>
|
||||||
|
<b>
|
||||||
|
<a><xsl:attribute name="name">item<xsl:value-of select="position()" /></xsl:attribute>
|
||||||
|
<xsl:value-of select="title" />
|
||||||
|
</a>
|
||||||
|
</b>
|
||||||
|
<br />
|
||||||
|
<xsl:apply-templates select="desc" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- *********************************************************************** -->
|
||||||
|
</xsl:stylesheet>
|
@ -0,0 +1,17 @@
|
|||||||
|
__doctype__
|
||||||
|
<html>
|
||||||
|
__header1__
|
||||||
|
<body>
|
||||||
|
__sidebar1__
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
__maintitle__
|
||||||
|
<h2>What's new</h2>
|
||||||
|
__whatsnew-table__
|
||||||
|
__footer__
|
||||||
|
</div>
|
||||||
|
<!-- closes content -->
|
||||||
|
|
||||||
|
__tracker__
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!--*- sgml -*-->
|
@ -0,0 +1,51 @@
|
|||||||
|
<div class="fragment"><pre><span class="comment">// ***************************************************************** -*- C++ -*-</span>
|
||||||
|
<span class="comment">// exifprint.cpp, $Rev: 2286 $</span>
|
||||||
|
<span class="comment">// Sample program to print the Exif metadata of an image</span>
|
||||||
|
|
||||||
|
<span class="preprocessor">#include <exiv2/exiv2.hpp></span>
|
||||||
|
<span class="preprocessor">#include <iostream></span>
|
||||||
|
<span class="preprocessor">#include <iomanip></span>
|
||||||
|
<span class="preprocessor">#include <cassert></span>
|
||||||
|
|
||||||
|
<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* <span class="keyword">const</span> argv[])
|
||||||
|
<span class="keyword">try</span> {
|
||||||
|
|
||||||
|
<span class="keywordflow">if</span> (argc != 2) {
|
||||||
|
std::cout << <span class="stringliteral">"Usage: "</span> << argv[0] << <span class="stringliteral">" file\n"</span>;
|
||||||
|
<span class="keywordflow">return</span> 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]);
|
||||||
|
assert(image.get() != 0);
|
||||||
|
image->readMetadata();
|
||||||
|
|
||||||
|
Exiv2::ExifData &exifData = image->exifData();
|
||||||
|
<span class="keywordflow">if</span> (exifData.empty()) {
|
||||||
|
std::string error(argv[1]);
|
||||||
|
error += <span class="stringliteral">": No Exif data found in the file"</span>;
|
||||||
|
<span class="keywordflow">throw</span> Exiv2::Error(1, error);
|
||||||
|
}
|
||||||
|
Exiv2::ExifData::const_iterator end = exifData.end();
|
||||||
|
<span class="keywordflow">for</span> (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) {
|
||||||
|
const char* tn = i->typeName();
|
||||||
|
std::cout << std::setw(44) << std::setfill(<span class="charliteral">' '</span>) << std::left
|
||||||
|
<< i->key() << <span class="stringliteral">" "</span>
|
||||||
|
<< <span class="stringliteral">"0x"</span> << std::setw(4) << std::setfill(<span class="charliteral">'0'</span>) << std::right
|
||||||
|
<< std::hex << i->tag() << <span class="stringliteral">" "</span>
|
||||||
|
<< std::setw(9) << std::setfill(<span class="charliteral">' '</span>) << std::left
|
||||||
|
<< (tn ? tn : <span class="stringliteral">"Unknown"</span>) << <span class="stringliteral">" "</span>
|
||||||
|
<< std::dec << std::setw(3)
|
||||||
|
<< std::setfill(<span class="charliteral">' '</span>) << std::right
|
||||||
|
<< i->count() << <span class="stringliteral">" "</span>
|
||||||
|
<< std::dec << i->value()
|
||||||
|
<< <span class="stringliteral">"\n"</span>;
|
||||||
|
}
|
||||||
|
|
||||||
|
<span class="keywordflow">return</span> 0;
|
||||||
|
}
|
||||||
|
<span class="keywordflow">catch</span> (Exiv2::AnyError& e) {
|
||||||
|
std::cout << <span class="stringliteral">"Caught Exiv2 exception '"</span> << e.what() << <span class="stringliteral">"'\n"</span>;
|
||||||
|
<span class="keywordflow">return</span> -1;
|
||||||
|
}
|
||||||
|
</pre></div>
|
||||||
|
|
@ -0,0 +1,110 @@
|
|||||||
|
<div class="fragment"><pre><span class="comment">// ***************************************************************** -*- C++ -*-</span>
|
||||||
|
<span class="comment">// addmoddel.cpp, $Rev: 2286 $</span>
|
||||||
|
<span class="comment">// Sample program showing how to add, modify and delete Exif metadata.</span>
|
||||||
|
|
||||||
|
<span class="preprocessor">#include <exiv2/exiv2.hpp></span>
|
||||||
|
<span class="preprocessor">#include <iostream></span>
|
||||||
|
<span class="preprocessor">#include <iomanip></span>
|
||||||
|
<span class="preprocessor">#include <cassert></span>
|
||||||
|
|
||||||
|
<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* <span class="keyword">const</span> argv[])
|
||||||
|
<span class="keyword">try</span> {
|
||||||
|
<span class="keywordflow">if</span> (argc != 2) {
|
||||||
|
std::cout << <span class="stringliteral">"Usage: "</span> << argv[0] << <span class="stringliteral">" file\n"</span>;
|
||||||
|
<span class="keywordflow">return</span> 1;
|
||||||
|
}
|
||||||
|
std::string file(argv[1]);
|
||||||
|
|
||||||
|
<span class="comment">// Container for exif metadata. This is an example of creating</span>
|
||||||
|
<span class="comment">// exif metadata from scratch. If you want to add, modify, delete</span>
|
||||||
|
<span class="comment">// metadata that exists in an image, start with ImageFactory::open</span>
|
||||||
|
Exiv2::ExifData exifData;
|
||||||
|
|
||||||
|
<span class="comment">// *************************************************************************</span>
|
||||||
|
<span class="comment">// Add to the Exif data</span>
|
||||||
|
|
||||||
|
<span class="comment">// This is the quickest way to add (simple) Exif data. If a metadatum for</span>
|
||||||
|
<span class="comment">// a given key already exists, its value is overwritten. Otherwise a new</span>
|
||||||
|
<span class="comment">// tag is added.</span>
|
||||||
|
exifData[<span class="stringliteral">"Exif.Image.Model"</span>] = <span class="stringliteral">"Test 1"</span>; <span class="comment">// AsciiValue</span>
|
||||||
|
exifData[<span class="stringliteral">"Exif.Image.SamplesPerPixel"</span>] = uint16_t(162); <span class="comment">// UShortValue</span>
|
||||||
|
exifData[<span class="stringliteral">"Exif.Image.XResolution"</span>] = int32_t(-2); <span class="comment">// LongValue</span>
|
||||||
|
exifData[<span class="stringliteral">"Exif.Image.YResolution"</span>] = Exiv2::Rational(-2, 3); <span class="comment">// RationalValue</span>
|
||||||
|
std::cout << <span class="stringliteral">"Added a few tags the quick way.\n"</span>;
|
||||||
|
|
||||||
|
<span class="comment">// Create a ASCII string value (note the use of create)</span>
|
||||||
|
Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::asciiString);
|
||||||
|
<span class="comment">// Set the value to a string</span>
|
||||||
|
v->read(<span class="stringliteral">"1999:12:31 23:59:59"</span>);
|
||||||
|
<span class="comment">// Add the value together with its key to the Exif data container</span>
|
||||||
|
Exiv2::ExifKey key(<span class="stringliteral">"Exif.Photo.DateTimeOriginal"</span>);
|
||||||
|
exifData.add(key, v.get());
|
||||||
|
std::cout << <span class="stringliteral">"Added key \""</span> << key << <span class="stringliteral">"\", value \""</span> << *v << <span class="stringliteral">"\"\n"</span>;
|
||||||
|
|
||||||
|
<span class="comment">// Now create a more interesting value (without using the create method)</span>
|
||||||
|
Exiv2::URationalValue::AutoPtr rv(<span class="keyword">new</span> Exiv2::URationalValue);
|
||||||
|
<span class="comment">// Set two rational components from a string</span>
|
||||||
|
rv->read(<span class="stringliteral">"1/2 1/3"</span>);
|
||||||
|
<span class="comment">// Add more elements through the extended interface of rational value</span>
|
||||||
|
rv->value_.push_back(std::make_pair(2,3));
|
||||||
|
rv->value_.push_back(std::make_pair(3,4));
|
||||||
|
<span class="comment">// Add the key and value pair to the Exif data</span>
|
||||||
|
key = Exiv2::ExifKey(<span class="stringliteral">"Exif.Image.PrimaryChromaticities"</span>);
|
||||||
|
exifData.add(key, rv.get());
|
||||||
|
std::cout << <span class="stringliteral">"Added key \""</span> << key << <span class="stringliteral">"\", value \""</span> << *rv << <span class="stringliteral">"\"\n"</span>;
|
||||||
|
|
||||||
|
<span class="comment">// *************************************************************************</span>
|
||||||
|
<span class="comment">// Modify Exif data</span>
|
||||||
|
|
||||||
|
<span class="comment">// Since we know that the metadatum exists (or we don't mind creating a new</span>
|
||||||
|
<span class="comment">// tag if it doesn't), we can simply do this:</span>
|
||||||
|
Exiv2::Exifdatum& tag = exifData[<span class="stringliteral">"Exif.Photo.DateTimeOriginal"</span>];
|
||||||
|
std::string date = tag.toString();
|
||||||
|
date.replace(0, 4, <span class="stringliteral">"2000"</span>);
|
||||||
|
tag.setValue(date);
|
||||||
|
std::cout << <span class="stringliteral">"Modified key \""</span> << key
|
||||||
|
<< <span class="stringliteral">"\", new value \""</span> << tag.value() << <span class="stringliteral">"\"\n"</span>;
|
||||||
|
|
||||||
|
<span class="comment">// Alternatively, we can use findKey()</span>
|
||||||
|
key = Exiv2::ExifKey(<span class="stringliteral">"Exif.Image.PrimaryChromaticities"</span>);
|
||||||
|
Exiv2::ExifData::iterator pos = exifData.findKey(key);
|
||||||
|
<span class="keywordflow">if</span> (pos == exifData.end()) <span class="keywordflow">throw</span> Exiv2::Error(1, <span class="stringliteral">"Key not found"</span>);
|
||||||
|
<span class="comment">// Get a pointer to a copy of the value</span>
|
||||||
|
v = pos->getValue();
|
||||||
|
<span class="comment">// Downcast the Value pointer to its actual type</span>
|
||||||
|
Exiv2::URationalValue* prv = <span class="keyword">dynamic_cast<</span>Exiv2::URationalValue*<span class="keyword">></span>(v.release());
|
||||||
|
<span class="keywordflow">if</span> (prv == 0) <span class="keywordflow">throw</span> Exiv2::Error(1, <span class="stringliteral">"Downcast failed"</span>);
|
||||||
|
rv = Exiv2::URationalValue::AutoPtr(prv);
|
||||||
|
<span class="comment">// Modify the value directly through the interface of URationalValue</span>
|
||||||
|
rv->value_[2] = std::make_pair(88,77);
|
||||||
|
<span class="comment">// Copy the modified value back to the metadatum</span>
|
||||||
|
pos->setValue(rv.get());
|
||||||
|
std::cout << <span class="stringliteral">"Modified key \""</span> << key
|
||||||
|
<< <span class="stringliteral">"\", new value \""</span> << pos->value() << <span class="stringliteral">"\"\n"</span>;
|
||||||
|
|
||||||
|
<span class="comment">// *************************************************************************</span>
|
||||||
|
<span class="comment">// Delete metadata from the Exif data container</span>
|
||||||
|
|
||||||
|
<span class="comment">// Delete the metadatum at iterator position pos</span>
|
||||||
|
key = Exiv2::ExifKey(<span class="stringliteral">"Exif.Image.PrimaryChromaticities"</span>);
|
||||||
|
pos = exifData.findKey(key);
|
||||||
|
<span class="keywordflow">if</span> (pos == exifData.end()) <span class="keywordflow">throw</span> Exiv2::Error(1, <span class="stringliteral">"Key not found"</span>);
|
||||||
|
exifData.erase(pos);
|
||||||
|
std::cout << <span class="stringliteral">"Deleted key \""</span> << key << <span class="stringliteral">"\"\n"</span>;
|
||||||
|
|
||||||
|
<span class="comment">// *************************************************************************</span>
|
||||||
|
<span class="comment">// Finally, write the remaining Exif data to the image file</span>
|
||||||
|
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file);
|
||||||
|
assert(image.get() != 0);
|
||||||
|
|
||||||
|
image->setExifData(exifData);
|
||||||
|
image->writeMetadata();
|
||||||
|
|
||||||
|
<span class="keywordflow">return</span> 0;
|
||||||
|
}
|
||||||
|
<span class="keywordflow">catch</span> (Exiv2::AnyError& e) {
|
||||||
|
std::cout << <span class="stringliteral">"Caught Exiv2 exception '"</span> << e << <span class="stringliteral">"'\n"</span>;
|
||||||
|
<span class="keywordflow">return</span> -1;
|
||||||
|
}
|
||||||
|
</pre></div>
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
<div class="fragment"><pre><span class="comment">// ***************************************************************** -*- C++ -*-</span>
|
||||||
|
<span class="comment">// iptcprint.cpp, $Rev: 2286 $</span>
|
||||||
|
<span class="comment">// Sample program to print the IPTC metadata of an image</span>
|
||||||
|
|
||||||
|
<span class="preprocessor">#include <exiv2/exiv2.hpp></span>
|
||||||
|
<span class="preprocessor">#include <iostream></span>
|
||||||
|
<span class="preprocessor">#include <iomanip></span>
|
||||||
|
<span class="preprocessor">#include <cassert></span>
|
||||||
|
|
||||||
|
<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* <span class="keyword">const</span> argv[])
|
||||||
|
<span class="keyword">try</span> {
|
||||||
|
|
||||||
|
<span class="keywordflow">if</span> (argc != 2) {
|
||||||
|
std::cout << <span class="stringliteral">"Usage: "</span> << argv[0] << <span class="stringliteral">" file\n"</span>;
|
||||||
|
<span class="keywordflow">return</span> 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]);
|
||||||
|
assert (image.get() != 0);
|
||||||
|
image->readMetadata();
|
||||||
|
|
||||||
|
Exiv2::IptcData &iptcData = image->iptcData();
|
||||||
|
<span class="keywordflow">if</span> (iptcData.empty()) {
|
||||||
|
std::string error(argv[1]);
|
||||||
|
error += <span class="stringliteral">": No IPTC data found in the file"</span>;
|
||||||
|
<span class="keywordflow">throw</span> Exiv2::Error(1, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
Exiv2::IptcData::iterator end = iptcData.end();
|
||||||
|
<span class="keywordflow">for</span> (Exiv2::IptcData::iterator md = iptcData.begin(); md != end; ++md) {
|
||||||
|
std::cout << std::setw(44) << std::setfill(<span class="charliteral">' '</span>) << std::left
|
||||||
|
<< md->key() << <span class="stringliteral">" "</span>
|
||||||
|
<< <span class="stringliteral">"0x"</span> << std::setw(4) << std::setfill(<span class="charliteral">'0'</span>) << std::right
|
||||||
|
<< std::hex << md->tag() << <span class="stringliteral">" "</span>
|
||||||
|
<< std::setw(9) << std::setfill(<span class="charliteral">' '</span>) << std::left
|
||||||
|
<< md->typeName() << <span class="stringliteral">" "</span>
|
||||||
|
<< std::dec << std::setw(3)
|
||||||
|
<< std::setfill(<span class="charliteral">' '</span>) << std::right
|
||||||
|
<< md->count() << <span class="stringliteral">" "</span>
|
||||||
|
<< std::dec << md->value()
|
||||||
|
<< std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
<span class="keywordflow">return</span> 0;
|
||||||
|
}
|
||||||
|
<span class="keywordflow">catch</span> (Exiv2::AnyError& e) {
|
||||||
|
std::cout << <span class="stringliteral">"Caught Exiv2 exception '"</span> << e << <span class="stringliteral">"'\n"</span>;
|
||||||
|
<span class="keywordflow">return</span> -1;
|
||||||
|
}
|
||||||
|
</pre></div>
|
||||||
|
|
@ -0,0 +1,50 @@
|
|||||||
|
<div class="fragment"><pre><span class="comment">// ***************************************************************** -*- C++ -*-</span>
|
||||||
|
<span class="comment">// iptceasy.cpp, $Rev: 2286 $</span>
|
||||||
|
<span class="comment">// The quickest way to access, set or modify IPTC metadata.</span>
|
||||||
|
|
||||||
|
<span class="preprocessor">#include <exiv2/exiv2.hpp></span>
|
||||||
|
<span class="preprocessor">#include <iostream></span>
|
||||||
|
<span class="preprocessor">#include <iomanip></span>
|
||||||
|
<span class="preprocessor">#include <cassert></span>
|
||||||
|
|
||||||
|
<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* <span class="keyword">const</span> argv[])
|
||||||
|
<span class="keyword">try</span> {
|
||||||
|
<span class="keywordflow">if</span> (argc != 2) {
|
||||||
|
std::cout << <span class="stringliteral">"Usage: "</span> << argv[0] << <span class="stringliteral">" file\n"</span>;
|
||||||
|
<span class="keywordflow">return</span> 1;
|
||||||
|
}
|
||||||
|
std::string file(argv[1]);
|
||||||
|
|
||||||
|
Exiv2::IptcData iptcData;
|
||||||
|
|
||||||
|
iptcData[<span class="stringliteral">"Iptc.Application2.Headline"</span>] = <span class="stringliteral">"The headline I am"</span>;
|
||||||
|
iptcData[<span class="stringliteral">"Iptc.Application2.Keywords"</span>] = <span class="stringliteral">"Yet another keyword"</span>;
|
||||||
|
iptcData[<span class="stringliteral">"Iptc.Application2.DateCreated"</span>] = <span class="stringliteral">"2004-8-3"</span>;
|
||||||
|
iptcData[<span class="stringliteral">"Iptc.Application2.Urgency"</span>] = uint16_t(1);
|
||||||
|
iptcData[<span class="stringliteral">"Iptc.Envelope.ModelVersion"</span>] = 42;
|
||||||
|
iptcData[<span class="stringliteral">"Iptc.Envelope.TimeSent"</span>] = <span class="stringliteral">"14:41:0-05:00"</span>;
|
||||||
|
iptcData[<span class="stringliteral">"Iptc.Application2.RasterizedCaption"</span>] = <span class="stringliteral">"230 42 34 2 90 84 23 146"</span>;
|
||||||
|
iptcData[<span class="stringliteral">"Iptc.0x0009.0x0001"</span>] = <span class="stringliteral">"Who am I?"</span>;
|
||||||
|
|
||||||
|
Exiv2::StringValue value;
|
||||||
|
value.read(<span class="stringliteral">"very!"</span>);
|
||||||
|
iptcData[<span class="stringliteral">"Iptc.Application2.Urgency"</span>] = value;
|
||||||
|
|
||||||
|
std::cout << <span class="stringliteral">"Time sent: "</span> << iptcData[<span class="stringliteral">"Iptc.Envelope.TimeSent"</span>] << <span class="stringliteral">"\n"</span>;
|
||||||
|
|
||||||
|
<span class="comment">// Open image file</span>
|
||||||
|
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file);
|
||||||
|
assert (image.get() != 0);
|
||||||
|
|
||||||
|
<span class="comment">// Set IPTC data and write it to the file</span>
|
||||||
|
image->setIptcData(iptcData);
|
||||||
|
image->writeMetadata();
|
||||||
|
|
||||||
|
<span class="keywordflow">return</span> 0;
|
||||||
|
}
|
||||||
|
<span class="keywordflow">catch</span> (Exiv2::AnyError& e) {
|
||||||
|
std::cout << <span class="stringliteral">"Caught Exiv2 exception '"</span> << e << <span class="stringliteral">"'\n"</span>;
|
||||||
|
<span class="keywordflow">return</span> -1;
|
||||||
|
}
|
||||||
|
</pre></div>
|
||||||
|
|