Category: ExIf35

  • ExIf 35 – Re-evaluating an Abandoned Project

    I started the ExIf 35 project (http://exif35.pcfire.net) in 2010 when I returned to shooting film. Perhaps I’m metadata obsessed, or just crazy, but I decided I wanted good ExIf data on my scans of film photos. In the six years since I started the project I allowed myself to reach a point where I felt that ExIf 35 was “complete”, it did what it needed to do, usually pretty well. I made no major changes to the software since 2012 (see: http://exif35.pcfire.net/viewnotes.php) and I drifted somewhat away from film photography as a hobby and art again. This spring I purchased a Nikon F6 camera and dove right back in just as deep as I had been before with film photography – the only difference is that the F6 does a bit of its own metadata recording, which makes having a metadata/ExIf workflow even more important. Since the Nikon F6 was released in 2004 many of its accessories (MV-1) are no longer made and its intended software no longer functions in the modern era, so I had to seek out other alternatives and build new things into ExIf 35 to accommodate my needs.  When I speak of “my needs”, I refer of course to the fact that I record information beyond basic ExIf data. I like to record things like photographic filters in use and details about how the film was developed (see: http://exif35.pcfire.net/docs.php?doc=xmpSpec for a complete list of my special fields).

    Yesterday in a fit of boredom between semesters I began looking at some of my data in Exif as it was stored in Flickr. I realized that there was no degree symbol in my develop temperatures (20 C vs. 20° C), so I started tinkering with the data writing process, only to find out that putting that character in one location in the file (Exif:ImageDescription) caused Flickr to corrupt the field when it is displayed. In an effort to correct the problem I began looking at the field in other applications (ACDSee, PhotoMe, etc). I discovered two things 1) There is nothing wrong with the bloody thing and 2) There are a few new ExIf fields that I had not seen before. This led me to the ExIf documentation (http://www.cipa.jp/std/documents/e/DC-008-Translation-2016-E.pdf).

    Many of the fields that were added in 2012 to version 2.3 and in 2016 to version 2.31 are fields related to sensitivity speed and sensitivity type.   Most notably, ISO is no longer the only way to measure sensitivity. While I doubt I will use anything else, this represents a bit of an evolution in the way that metadata capture on imaging devices is represented. The addition of fields such as PhotographicSensitivity, RecommendedExposureIndex and a new ISOSpeed field expand options for the level of detail that is recorded for film sensitivity, although the creators of ExIf intended such fields for describing electronic sensors and their gain ranges – funny how those parallels between digital and film are maintained after all this time. When I first read about those fields my first thought was a very quirky film called Ilford Delta 3200. This film is marketed (recommended, even encouraged in DX) to be ISO 3200.  The actual film speed is ISO 1000. The film is regularly shot anywhere from ISO 800 to ISO 6400 (some claim it can push to 12,800). Once I figure out what each of these fields does in practice (through reading them in a variety of applications) and maybe through reading ISO specification 12232 I will be better prepared to use these fields to accomplish my goals. Some of the new fields relate to details of the camera and lens configuration used – these I am already implementing as they are clearly defined.

    I feel that I need to re-evaluate ExIf 35 because there are a lot of gaps in what it logs to files, what is collected from users and perhaps some difficulties with the way that it writes data in general. I have been away from the project for too long and have only added fields on occasion. The overall functionality of the application needs to be checked for compliance with modern standards as I implemented my ExIf writing in an experimental way, guessing at how things worked and then leaving things in place once they worked, which is perhaps not the best way to approach something as intricate as metadata. There are also fields that I have not tested in detail how they work, which may also introduce problems that cause some applications to not read the file accurately. The addition of new fields such as time zone offset present cases where the UI and the data storage (preferences and defaults) functions need to change to match the expectations of the standards. Adding the new ISO fields I mentioned before will require a change to the handling of recording ISO data, such as I will need new fields in the form to collect the data and will need to establish logic to ensure that all of the data is recorded accurately and consistently even with those fields are not filled out (very often I shoot and develop my standard film, HP5+, at its DX speed, so assuming the other values is fine).

    The project, and its documentation, are long overdue to be refreshed. There are many areas I have patched in new fields or extended functionality without reworking the workflow or the ExIf encoding process.

  • ExIf 35 Build 20130520

    ExIf 35 0.2.20130521
    May 21, 2013
    --------------------
    
    Release Information:
    	*Released as Windows Executable
    	*Released as Windows Installer
    
    System Requirements (PC):
    	*Must be running Microsoft .NET Framework 3.5
    	*Supports Windows 2000 and higher
    	*Software is developed and tested on Windows 7	
    	
    Changes:
    	*Implemented the ability to import exposure data from the 'EXIF4FILM'
    Android application by CodeUnited. *Added ability to edit data across multiple exposures at the same time
    (Additional Information > Add Information to Multiple) Support: *Email EXIF35@PCFIRE.NET *Website: http://exif35.pcfire.net *SourceForge: http://sf.exif35.pcfire.net Developed By: *Curtis M. Kularski
  • Making ExIf 35 Mobile

    The first application that I intend to write for Android will be a mobile version of my own ExIf 35 application. I have chosen to do this for several reasons. First, I need an application that has a clear purpose to write for my first application while I am learning. Second, at the current time the desktop version of the application relies on my use of a notes application for iOS or Android (carrying the device with me) or carrying a physical notepad and pen. This also requires me manually keeping track of a time stamp, which is in itself a waste of time.

    The first issue is fairly straight-forward. Its harder to write a good piece of software if you don’t know where its going, and you really can’t put a lot of effort into pre-designing the application because you don’t know exactly what the constructs of the development environment entail. Through using ExIf 35 as my base I know what its supposed to look like, what its supposed to do and I have a rough idea of how to get there, but the new environment still takes time to learn. Another advantage of using ExIf 35 is that the object classes are already written, so I don’t have to spend valuable time in the learning process trying to write a new object. My Exposure.cs and Roll.cs will be attached to the new application just as they are to the old one, and the cool thing is, if this works out, then I can keep them synced with each other and not have to ever unlink them (they are objects, thus not platform or environment dependent). While this means that I do still have to write and compile in C#, I am not bothered by this idea. Mono (open-source version of .NET) is a good and usually efficient set of libraries which should work well for what I am trying to accomplish.

    There have been complaints about  ExIf 35 not being mobile since the day I released it publically (literally, same day someone on Flickr demanded an iOS variant). I have to agree with these complaints, since I still have to use a notepad app on my phone or on my iPod to keep track of my exposures until I get back to my desktop to transfer them. This is a waste of time as it requires me entering the data twice. I considered writing a method that could use a standardize text file as input, but unfortunately humans aren’t very good at doing things in a standard way and we use so many personal conventions in recording things that it would require as much time to train a human to write the file as it would to write the application to do it automatically. The other issue is time-keeping. It is important for the purposes of ExIf  35 that times be kept fairly well and as such it is inefficient to have a human keep time, it just happens. I have also found that in using a notes application or a physical notepad I am less likely to enter the extended details of an image (filters used, whether it was close, macro or far, or any number of other settings) than if I were entering it in the desktop application immediately after shooting. While I do not anticipate having all of this information recorded from the start of the mobile app, it will be simple to use since the object class will be maintained.

    The hard part for me about writing the existing application over will be trying to remember how I did it. At present the application opens to the last file known, it knows to create a new file if there isn’t one and any number of other little goodies that I don’t even remember because it comes together so seamlessly. I don’t remember exactly what functions I wrote first before, and thus I will have to start from scratch at remembering how to do them again. A lot of code will be borrowed from ExIf 35, but transferring such a complex set of code over to the new application will result in a number of problems until I get  everything sorted out and linked with where it is supposed to go, so I won’t do very much of that until the basics are implemented.

    A final concern I have about writing the new application is its impact on its desktop predecessor. I will not immediately have the capability to sync data between ExIf 35 PC and the Android version, so I will mostly work on an active file and then transfer it back to the desktop at the same time as I take the roll out of the camera and only use the desktop version for making changes or for writing the data to the image files. This changes the primary role of the application and therefore I will have to re-evaluate the design of the desktop version. Its going to be an iterative process from borrowing the code through the impact on its predecessor.

  • ExIf 35 Build 20121117

    I spent some time working on ExIf 35 today. I got a large amount done regarding the implementation of auto-complete fields in both the main interface as well as in the add exposure window. This is only the third new build that I have produced since I stopped production of new builds in June 2010. I am slowly working back into working on ExIf35. I have lost sight of my goals with the application, but am gradually relearning how to use it for my own purposes. My work from today is reflected in my release notes file, copied below.

    The build can be downloaded from: http://exif35.pcfire.net/downloads.php
    The updated XMP specification: http://exif35.pcfire.net/docs.php?doc=xmpSpec
    The updated fields list: http://exif35.pcfire.net/docs.php?doc=fields

     

    ExIf 35 0.2.20121117
    November 17, 2012
    --------------------
    
    Release Information:
    	*Released as Windows Executable
    	*Released as Windows Installer
    
    System Requirements (PC):
    	*Must be running Microsoft .NET Framework 3.5
    	*Supports Windows 2000 and higher
    	*Software is developed and tested on Windows 7
    	
    	
    Changes:
    	*Change in functionality for roll number
    	*New roll number now calculated as maximum observed + 1
    	*Development temperature added to Additional Roll Information
    	*Autocomplete added to: aperture, shutter speed, focal length
    	*Autocomplete added to: ISO
    	*Adaptive autocomplete added to: Auxilary Lens/Filter
    	*Adaptive autocomplete added to: Developer Solution, Film Type
    
    Notes:
    	*Development temperature is accepted in C or F, but will be stored
    		and recorded to ExIf as C. Appropriate conversion will be made.
    
    	*This build updates the XMP specification file and the fields
    		documentation. 
    	
    Support:
    	*Email EXIF35@PCFIRE.NET
    	*Website: http://exif35.pcfire.net
    	*SourceForge: http://sf.exif35.pcfire.net
    
    Developed By:
    	*Curtis M. Kularski
  • Reconsidering the ExIf35 Panel

    image

    Is this box intimidating? After being away from it for almost 2 years it was intimidating to me when I returned to it a few weeks ago.

    Obviously this is not a useful form for anyone that is not both an expert at photography and in data entry. I think this form is absolutely horrendous for basic day-to-day data storage. At the present time I am considering replacing this particular panel with a more slim model and placing this form as a special option for experts and for use on a case-by-case basis where more information may be needed.

    I believe the revised form shall only need a few pieces of information:

    • Exposure Program (A, S(T), P, M)
    • Aperture
    • Exposure Time
    • Focal Length
    • Time of Exposure (Date Time)
    • Exposure Bias

    These options would reflect the basic pieces of data that are captured and stored by DSC ExIf at exposure time. While the other data, such as metering mode may be useful it is not something that the average photographer changes very often. Orientation is no longer needed because the user can now adjust that after the images have been mated with their data and visually confirm the transform.

    The area that bothers me about making these changes is the loss of special fields such as lens selection, lighting and flash info just because of a need to make the form more user-friendly. I am considering the idea of a pop-out panel that will allow the user to select these pieces of data.

    Another area that is particularly difficult for me at the moment is considering what my data-retention policy in the application will be. I can usually safely remember user and lens. What about the other form elements? Should they keep their values or reset to zero when they are hidden?

    There is a lot to consider regarding the improvement of the user experience for ExIf35.

  • ExIf Rotation Implemented

    image

    ExIf 35’s rotation functionality now completely works!

  • Adding Rotation to ExIf35

    image

    About 2 years ago when I thought I wanted to do film photography I started working on an application called ExIf35. The idea was to have the same level of data storage in JPEGs from a film scanner as those found in DSC (Digital Still Camera) image files. One of the biggest pains that I had was the confusing way in which ExIf rotation is handled. The old method required entering the rotation information when you first entered the data for the exposure. While entering aperture and shutter time is hard enough, the application expected the user to remember which way the camera was turned as well. This was of course a step up from the user needing to enter the actual ExIf integer for which way the frame was to rotate.

    Now I am working toward developing the form pictured above, it includes the same drag/drop or select tool that is used in the original ExIf writing process, except not requiring an output directory (because this form just saves to the data file, not the actual image file). Once all files are recorded the user can click on an image file to get a thumbnail image. Once I get the code written the blue and green buttons can be used to change the direction of the thumbnail and record the proper alignment for the ExIf notation. The data will then be saved to the ExIf35 exposure record in the roll file and the information can be written as normal.

  • World’s Worst Written Manual

    http://exif35.pcfire.net/docs.php?doc=manual

    There it is. I have looked over it several times and tried to correct on it, but I just don’t know exactly where to begin making this document something that a human (specifically a film photog) would actually be able/want to read. Obviously my skills for writing do not extend to software documentation. This is my first time ever having to actually write out documentation and unfortunately, I don’t have a bunch of trained monkeys working to turn my overly-technical docs into something more usable.

  • Image Rotation in ExIf

    ExIf rotation makes no rational or logical sense. Below is code that rotates an image based on its present position in increments of one quarter turn (90 degrees) at a time.


    private
    int rotateImg(int currentOrientation, int rotate)

    {


    int next = 0;


    int prev = 0;


    switch (currentOrientation)

    {


    //1,6,3,8


    case 0: next = 6; prev = 8; break;


    case 1: next = 6; prev = 8; break;


    case 6: next = 3; prev = 1; break;


    case 3: next = 8; prev = 6; break;


    case 8: next = 1; prev = 3; break;

    }


    if (rotate == 1)

    {


    return next;

    }


    else
    if (rotate == -1)

    {


    return prev;

    }


    else

    {


    return next;

    }

    }

  • ExIf Bliss

    After a little more fighting, I finally got things about as far as I think I can. I do not have any lens information in yet, but as far as I can tell there is no officially supported tag for it, only things like Nikon’s maker note fields for it. It sucks, but unfortunately I am limited by the complexities of ExIf itself. I am starting to feel a bit like I am doing a lot of work for nothing, because in general I feel like I have no real results. I have not developed any of my own film and scanned it, so I won’t be able to do this with real images until I do.

    Camera: Nikon N80QD
    Exposure: 0.001 sec (1/1000)
    Aperture: f/2.8
    Focal Length: 50 mm
    ISO Speed: 400
    Flash: No Flash
    File Size: 5.7 kB
    File Type: JPEG
    MIME Type: image/jpeg
    Image Width: 554
    Image Height: 267
    Encoding Process: Baseline DCT, Huffman coding
    Bits Per Sample: 8
    Color Components: 3
    X-Resolution: 96 dpi
    Y-Resolution: 96 dpi
    Image Description: Test image for the Nikon N80QD
    Orientation: Horizontal (normal)
    Software: ExIf 35
    Date and Time (Modified): 2010:03:05 14:00:00
    Artist: Curtis M. Kularski
    Exposure Program: Aperture-priority AE
    Date and Time (Original): 2010:03:05 14:00:00
    Date and Time (Digitized): 2010:03:08 21:53:53
    Metering Mode: Average
    User Comment: Shot on Fujifilm Neopan 400
    Focal Length In35mm Format: 50 mm