Click here to Skip to main content
13,146,014 members (44,179 online)
Click here to Skip to main content
Add your own
alternative version


86 bookmarked
Posted 8 Sep 2003

The ExifWorks class

Rate this:
Please Sign up or sign in to vote.
The ExifWorks is a class written in 100% pure managed VB.NET, which allows comfortable reading of embedded EXIF metadata.

What is EXIF

EXIF stands for Exchangeable Image File Format. This format is used for storing various metadata in images, and is widely used mainly in digital still cameras. More information about EXIF can be found here, or in the document Description of the EXIF file format by TsuruZoh Tachibanaya.

When I was trying to find any sources regarding comfort access from .NET environment to these data, I was not successful. So I wrote this class and gave it freely available as open source.

What is ExifWorks

ExifWorks is a class written in 100% pure managed VB.NET, which allows comfort reading and writing of embedded EXIF metadata. It has the following features:

  • Provides the TagNames Enum, which contains user-friendly constant names for all known EXIF parameter IDs.
  • Provides generic functions for reading EXIF parameters: GetInt16, GetInt32, GetString, and GetRational, as well as GetPropertyInt16, GetPropertyInt32, GetPropertyString, and GetPropertyRational. They may be used to simplify the access to all EXIF data from your custom application.
  • Provides a user-friendly abstraction layer for most of the common parameters, allowing easy work with EXIF data and their presentation to end users. The abstraction layer has been developed for presentation, so even if a value is not present, some data (in valid syntax) are provided. Either default values or values computed from other sources (i.e. shutter speed vs. exposure time) are provided. If you need exact data, use the generic functions instead.

The provided test application exread.exe shows working with the ExifWorks class.


ExifReader/ExifWorks .NET library

Copyright (c) Michal A. Valášek - Altair Communícations, 2003-2006

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library 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. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.

The text of the GNU Lesser General Public License (LGPL) is available online here.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Michal Altair Valášek
Software Developer Altairis
Czech Republic Czech Republic

Software architect and developer in Altairis, dev shop in Czech republic. Microsoft Most Valuable Professional (MVP) since 2004.

See my open source project at Codeplex.

You may also be interested in...

Comments and Discussions

QuestionAdding comments using ExifWorks Pin
Sdolby5-Jun-16 8:09
memberSdolby5-Jun-16 8:09 
BugThere's a mistake in the Byte() to Int32 conversion... I've posted the fix here: Pin
Sarah Cartwright18-May-14 22:25
memberSarah Cartwright18-May-14 22:25 
SuggestionHandling Shutter speed in a better way 0.5 to 1/2 and 0.16667 to 1/6th Pin
Member 799555427-Jul-13 8:05
memberMember 799555427-Jul-13 8:05 
Questionkeywords Pin
sharkyigor7-Jul-13 8:21
membersharkyigor7-Jul-13 8:21 
AnswerRe: keywords Pin
Sdolby10-Sep-16 10:48
memberSdolby10-Sep-16 10:48 
SuggestionCorrecting Exposure Time to display 1/200 instead of 0.005s Pin
Tino Fourie17-Jun-13 14:37
memberTino Fourie17-Jun-13 14:37 
QuestionExifISOSpeed = &H8827 ' decimal 34855 ISO Speed 100, 200, 400, etc. Pin
beppe marino22-May-13 7:25
memberbeppe marino22-May-13 7:25 
QuestionAltitudeRef Pin
Archdeacon9-Sep-12 15:09
memberArchdeacon9-Sep-12 15:09 
Questionmistake Pin
huelsmann2-Jul-12 20:42
memberhuelsmann2-Jul-12 20:42 
QuestionBasic Documentation Pin
CeremBeyazit22-Jun-12 7:02
memberCeremBeyazit22-Jun-12 7:02 
QuestionCorrect display int16 ("Exposure time" < 1/255 s) and Int32 value Pin
andbag1-Apr-12 22:20
memberandbag1-Apr-12 22:20 
GeneralMy vote of 5 Pin
Mohammad_02112-Nov-11 22:24
memberMohammad_02112-Nov-11 22:24 
QuestionEXIF GPS Latitude and others Pin
bridgfod13-Aug-11 17:20
memberbridgfod13-Aug-11 17:20 
AnswerRe: EXIF GPS Latitude and others Pin
bridgfod15-Aug-11 2:21
memberbridgfod15-Aug-11 2:21 
GeneralAltitude and ImgDir Pin
JustinMW12-Nov-10 10:54
memberJustinMW12-Nov-10 10:54 
QuestionExifWorks Subject Distance Pin
Archdeacon4-Sep-10 22:56
memberArchdeacon4-Sep-10 22:56 
I have tried this on a bunch of JPG photos and I get 0.0 always returned as SubjectDistance.
Can anyone advise please?
AnswerRe: ExifWorks Subject Distance Pin
Member 181547028-Sep-11 3:12
memberMember 181547028-Sep-11 3:12 
GeneralMy vote of 4 Pin
Archit937328444824-Jul-10 7:44
memberArchit937328444824-Jul-10 7:44 
GeneralSaving edits Pin
calipo19-Aug-09 6:09
membercalipo19-Aug-09 6:09 
GeneralRe: Saving edits Pin
Drew Stegon19-Aug-09 11:16
memberDrew Stegon19-Aug-09 11:16 
GeneralRe: Saving edits Pin
x38class23-Sep-09 20:26
memberx38class23-Sep-09 20:26 
GeneralRe: Saving edits Pin
Drew Stegon24-Sep-09 6:13
memberDrew Stegon24-Sep-09 6:13 
GeneralRe: Saving edits Pin
emompong17-Feb-10 16:33
memberemompong17-Feb-10 16:33 
GeneralRe: Saving edits Pin
Zisha1-Aug-12 11:20
memberZisha1-Aug-12 11:20 
GeneralRe: Saving edits Pin
chuasw2327-Feb-12 15:30
memberchuasw2327-Feb-12 15:30 
QuestionHow to set / write "rational-data" like latitude / longitude ? [modified] Pin
scooterdd14-Aug-09 0:35
memberscooterdd14-Aug-09 0:35 
AnswerRe: How to set / write "rational-data" like latitude / longitude ? Pin
Drew Stegon19-Aug-09 17:28
memberDrew Stegon19-Aug-09 17:28 
QuestionAny way to write tags Pin
gerardkelly21-Jul-09 7:03
membergerardkelly21-Jul-09 7:03 
GeneralCannot save ISO info Pin
waex9925-Jun-09 21:59
memberwaex9925-Jun-09 21:59 
GeneralEXIF Thumbnail Pin
Scott Rippey21-Jun-09 9:50
memberScott Rippey21-Jun-09 9:50 
GeneralRe: EXIF Thumbnail Pin
Drew Stegon17-Aug-09 5:57
memberDrew Stegon17-Aug-09 5:57 
AnswerRe: EXIF Thumbnail Pin
Scott Rippey17-Aug-09 8:29
memberScott Rippey17-Aug-09 8:29 
GeneralRe: EXIF Thumbnail Pin
Drew Stegon18-Aug-09 13:18
memberDrew Stegon18-Aug-09 13:18 
GeneralRe: EXIF Thumbnail Pin
Scott Rippey18-Aug-09 20:05
memberScott Rippey18-Aug-09 20:05 
GeneralRe: EXIF Thumbnail Pin
Drew Stegon19-Aug-09 11:04
memberDrew Stegon19-Aug-09 11:04 
GeneralRe: EXIF Thumbnail Pin
Drew Stegon18-Aug-09 13:37
memberDrew Stegon18-Aug-09 13:37 
Generalc# version with GPS feature (latitude, longitude) Pin
Member 425991919-Jun-09 22:41
memberMember 425991919-Jun-09 22:41 
GeneralOverwrite the existing file when saving. Pin
Member 417568311-Jun-09 10:28
memberMember 417568311-Jun-09 10:28 
GeneralLatitude/Longitude Pin
Melanie Hugglestone20-Mar-09 11:51
memberMelanie Hugglestone20-Mar-09 11:51 
GeneralRe: Latitude/Longitude Pin
Coffer7-Jun-09 6:49
memberCoffer7-Jun-09 6:49 
AnswerRe: Latitude/Longitude Pin
Member 425991919-Jun-09 22:43
memberMember 425991919-Jun-09 22:43 
GeneralRe: Latitude/Longitude Pin
Coffer20-Jun-09 9:26
memberCoffer20-Jun-09 9:26 
GeneralRe: Latitude/Longitude Pin
Mark Gray25-Nov-09 11:51
memberMark Gray25-Nov-09 11:51 
GeneralRe: Latitude/Longitude Pin
MichaelCameron196128-Sep-11 23:51
memberMichaelCameron196128-Sep-11 23:51 
GeneralSome wrong values Pin
Onur Guzel4-Jan-09 0:28
memberOnur Guzel4-Jan-09 0:28 
GeneralRe: Some wrong values Pin
Onur Guzel23-May-10 0:20
memberOnur Guzel23-May-10 0:20 
QuestionHow do you change EXIF properties? Pin
abhijitshrikhande8-Sep-08 10:53
memberabhijitshrikhande8-Sep-08 10:53 
GeneralWritten Tags - Visibility ijn Other Products Pin
Philip Lippard7-Jul-08 11:35
memberPhilip Lippard7-Jul-08 11:35 
GeneralIDisposable Pin
yvdh26-May-08 4:31
memberyvdh26-May-08 4:31 
QuestionFile Lock during Opening File Pin
marcolino730-Aug-07 10:28
membermarcolino730-Aug-07 10:28 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170915.1 | Last Updated 1 Feb 2006
Article Copyright 2003 by Michal Altair Valášek
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid