Shop OBEX P1 Docs P2 Docs Learn Events
Programer Wanted. — Parallax Forums

Programer Wanted.

mctriviamctrivia Posts: 3,772
edited 2009-10-28 05:41 in General Discussion
I have atached a Java program I wrote to rename pictures based on the time they where taken.

It assumes the cameras time is set to UTC time.

You need to enter what time zone the picture was taken in and it will name the file in such a way that windows will properly sort but humans can easily read even if crossing time zones.

Bug: You need to encode your computers time zone in before compiling.

What I would like is a nice GUI for it and if possible for it to try and figure out what time zone the picture was taken in by using encoded GPS information. I encode most pictures with the location they were taken at but not all so if not there it would have to guess based on time and most recent location stamp and ask user to verify.

Is anyone interested? If so what would you want for it? I just need finished program you are welcome to use and sell in anyway if you chose to write this.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
24 bit LCD Breakout Board coming soon. $21.99 has backlight driver and touch sensitive decoder.

Comments

  • SRLMSRLM Posts: 5,045
    edited 2009-10-27 00:44
    Do you have the "exifTags" class? I downloaded it and it doesn't compile.
  • mctriviamctrivia Posts: 3,772
    edited 2009-10-27 00:49
  • SRLMSRLM Posts: 5,045
    edited 2009-10-27 01:13
    Also, do you have some sample data to use? Both picture data and the "encoded GPS" data.

    Could you be clear on the exact format for the filename? (like "YYYY_MM_DD___HH_MM_SS")?

    Are you looking to move the dates and time from local to UTC or UTC to local?
  • mctriviamctrivia Posts: 3,772
    edited 2009-10-27 01:33
    file name output: GBTKZCCXPM - October 10th, 2008 at 1530 MDT.JPG

    [url=http://uploads.propmodule.com/mctrivia___[2008101000] - Event.zip][noparse][[/noparse]2008101000] - Event(Archive - 8.9MB)[/url]

    Here is an extract of the EXIF Data. GPS Stuff is at the bottom.


    [noparse][[/noparse]Image]
    Make = NIKON CORPORATION
    Model = NIKON D200
    Orientation = top/left
    X Resolution = 300
    Y Resolution = 300
    Resolution Unit = inch
    Software = Ver.2.00
    Date Time = 2008-10-10 21:30:49
    YCbCr Positioning = co-sited
    Exif IFD Pointer = Offset: 228
    GPS Info IFD Pointer = Offset: 28720

    [noparse][[/noparse]Camera]
    Exposure Time = 1/30"
    F Number = F7.1
    Exposure Program = Aperture priority
    ISO Speed Ratings = 200
    Exif Version = Version 2.21
    Date Time Original = 2008-10-10 21:30:49
    Date Time Digitized = 2008-10-10 21:30:49
    Components Configuration = YCbcr
    Compressed Bits Per Pixel = 4
    Exposure Bias Value = +0.33EV
    Max Aperture Value = F2.83
    Metering Mode = Pattern
    Light Source = unknown
    Flash = Off
    Focal Length = 24mm
    Maker Note = 27826 Byte
    User Comment =
    Subsec Time = 0.39"
    Subsec Time Original = 0.39"
    Subsec Time Digitized = 0.39"
    Flashpix Version = Version 1.0
    Color Space = sRGB
    Exif Image Width = 1936
    Exif Image Height = 1296
    Interoperability IFD Pointer = Offset: 28690
    Sensing Method = One-chip color area sensor
    File Source = DSC
    Scene Type = A directly photographed image
    CFA Pattern = [noparse][[/noparse]G,R],
    [noparse][[/noparse]B,G]
    Custom Rendered = Normal process
    Exposure Mode = Auto exposure
    White Balance = Auto white balance
    Digital Zoom Ratio = 1x
    Focal Length In 35mm Film = 36mm
    Scene Capture Type = Normal
    Gain Control = None
    Contrast = Normal
    Saturation = Normal
    Sharpness = Normal
    Subject Distance Range = unknown

    [noparse][[/noparse]Interoperability]
    Interoperability Index = ExifR98
    Interoperability Version = Version 1.0

    [noparse][[/noparse]Thumbnail Info]
    Compression = JPEG Compressed (Thumbnail)
    X Resolution = 300
    Y Resolution = 300
    Resolution Unit = inch
    JPEG Interchange Format = Offset: 29068
    JPEG Interchange Format Length = Length: 9327
    YCbCr Positioning = co-sited

    [noparse][[/noparse]Thumbnail]
    Thumbnail = 160 x 120

    [noparse][[/noparse]MakerNote (Nikon)]
    Makernote Version = 0210
    ISO Speed Used = 200
    Colour Mode = COLOR
    Quality = FINE
    White Balance = AUTO
    Sharpening = AUTO
    Focus Mode = AF-C
    Flash Setting = NORMAL
    Auto Flash Mode =
    White Balance Bias Value = 0
    White Balance Red, Blue Coefficients = 476/256, 339/256, 256/256, 256/256
    000D = 00, 01, 06, 00
    Exposure Diff = 00, 01, 0C, 00
    ThumbOffset = 2366
    Flash Compensation = E2, 01, 06, 00
    ISO Speed Requested = 200
    Photo corner coordinates = 0, 0, 1936, 1296
    0017 = 00, 01, 06, 00
    Flash Bracket Compensation Applied = 02, 01, 06, 00
    AE Bracket Compensation Applied = +0.33EV
    001B = 0, 3904, 2616, 3904, 2616, 0, 0
    001C = 00, 01, 06
    001D =
    001E = 1
    0020 = 0
    Tone Compensation (Contrast) = AUTO
    Lens Type = 2
    Lens Min/Max Focal Length, Max Aperture = 240/10, 700/10, 28/10, 28/10
    Flash Used = Flash Not Used
    Auto Focus Area = 00, 0A, 04, 00
    Bracketing & Shooting Mode = 17
    008A = 1
    008B = 54, 01, 0C, 00
    Colour Mode = MODE1
    Lighting Type = NATURAL
    0091 = 30, 32, 30, 37, 6D, 6E, 58, B5, E3, 72, FD, FD, 70, C7, 57, 76, B2, 0B, 81, 14, C4, 91, 7B, 82, A6, E7, 45, C0, 58, 0D, DF, CE, DA, 03, 49, AC, 2C, C9, 83, 5A, 4E, 5F, 8D, D8, 40, C5, 67, 26, 02, FB, 11, 44, 94, 01, 8B, 32, F6, D7, D5, F0, 28, 7D, EF, 7E, 2A, F3, D9, DC, FC, 39, 93, 0A, 9E, 4F, 1D, 08, 90, 2B, 55, 9E, 52, E8, EA, 70, 64, F1, D5, 00, 4F, C7, 2D, 3D, DA, BE, 54, CF, 6E, E3, 69, 0C, CC, E2, A7, BA, F3, 3F, AD, 3A, E3, A7, 85, 86, A2, B5, 06, A3, 44, E1, AB, 92, BC, 83, 8D, 69, C0, AE, 1F, 1A, CA, 3F, F9, 3C, 2B, D0, 03, 6A, 3E, E5, 44, 68, B0, C4, 97, 36, 45, CB, C1, D4, 04, 40, AA, 53, F5, 65, 40, 42, 5D, CD, 1F, CC, DF, C3, 89, F2, 6C, 89, 5D, 1A, 8E, CE, CD, 98, 2D, 51, 77, 32, 92, 16, 61, 20, FA, 08, 05, 3B, B8, 5E, 4A, 78, 73, 34, 2F, 17, 6B, F3, 19, 9C, 3C, F9, D3, CA, DC, 0F, 58, D3, 4B, F4, C7, DE, D2, AB, E1, 34, A4, 25, BB, B7, A2, 80, A5, E5, 56, 9A, 58, BA, 8D, FF, 8D, E8, 10, 4D, FD, 28, 38, AD, ED, F8, 20, 65, C7, 46, E2, 9B, 33, 66, 74, 86, 8B, 52, D6, 77, 35, 29, AA, 5D, 4F, A7, 9A, 93, 30, F5, D5, F9, F3, 8A, 36, EE, 7D, 28, F0, D5, D5, F6, 32, 8B, 01, 94, 44, 01, FB, 02, 26, 67, C5, 40, D8, 8D, 5E, 4F, 5A, 82, C9, 3B, AC, 76, 03, EA, CE, D0, 0D, 30, C0, 45, E7, A7, 82, 64, 91, C4, 14, 81, 0B, B2, 62, 57, 95, 70, A8, FD, 6F, FE, AA, 79, 59, BC, 7C, B9, 13, 8A, 1E, CF, 81, 88, 9F, B5, F7, 56, E2, 6B, 21, F4, 18, F1, 1C, 62, C6, 47, E5, A0, 78, 6D, 83, AE, F9, 63, E9, 8C, 4C, 29, 23, 3A, 6E, BF, 2D, B8, 60, 25, 07, 52, 22, 5B, B1, 24, EB, 61, 2B, 12, 58, 63, 74, 61, FF, 76, 10, C3, 4A, 06, 79, 2E, 1C, 47, 33, 34, BE, 25, BD, 79, 30, F2, 17, 8D, 72, 4F, 41, 54, 84, D1, 3B, 5D, 66, 24, 05, 01, 18, 4E, 9F, CF, 9A, 7B, 0D, E9, B8, 5A, 16, CF, 0E, 9F, 4D, 18, 00, 05, 27, 66, 35, 3B, C2, C3, 62, 5A, 16, 9C, FC, 59, D8, 63, E8, BD, AF, BE, FB, 22, 88, 13, 97, F8, 22, 61, 5D, 8C, DE, 4B, D0, 75, 37, 16, 12, 2B, 61, B4, 24, A8, 5B, 3B, 06, 1E, 25, 79, BA, 2F, BE, 6D, 93, 8A, 80, E5, 8C, E9, 63, FA, AE, 7F, 6D, 78, A0, E5, 47, C6, 62, 1B, F1, E4, E4, A3, ED, DB, 46, 75, 33, 99, 98, 1F, 49, 17, 9A, 91, 3F, 74, 0B, 08, 22, FC, EE, ED, 7B, A1, 70, 55, 57, 55, B2, 40, 81, 27, C4, A7, 7B, BD, A6, CC, 45, DB, 58, 0D, DF, DC, DA, 19, 49, 81, 2C, E7, 83, C2, 4E, D5, 8D, E1, 40, F6, 67, 0C, 02, E3, 11, 5F, 94, 25, 8B, 07, F7, F0, D4, 79, 28, DF, EF, FF, 2A, 73, D9, C8, FC, 26, 93, 27, 9F, 05, 18, 96, 15, 3F, 75, 78, 50, 1F, A3, 54, 64, 71, 9B, C2, 46, FC, 61, 24, FF, BD, F9, F2, 7F, 70, 6D, 4A, CC, A9, A3, EF, EE, 3F, 52, C7, 1F, 5A, 78, 79, 5D, 24, CE, 5B, 34, E3, 4C, FA, 96, B5, 12, D6, C8, 5F, E7, CE, CA, D1, 11, 2C, 9C, 1B, 5B, 00, 3E, 2B, DB, 68, B0, 15, 92, BC, F2, CB, C1, D4, 04, 51, BB, 42, E6, A7, 85, 80, 98, CD, 1F, 8E, 1A, C3, 89, 6C, 6C, 96, EC, 4C, 8E, 1F, CD, 98, 80, 85, A7, E6, 42, BB, 51, 04, D4, C1, CB, F2, 36, 97, 15, B0, 68, 3D, 2F, 33, 5B, A9, 2B, 99, 3E, E6, E2, D0, EC, 0A, 5F, D7, 61, F0, B5, 89, 92, A9, 07, 25, A4, 33, 3D, CB, 86, 85, 43, 89, 38, AF, D9, 6B, BA, A1, 4F, 49, 0C, 6B, 05, FF, 2E, FD, 0B, 11, 20, 67, 20, 07, E2, 99, 96, 25, 74, A3, 0C, 38, D6, 75, D2, 7A, 08, 1F, A8, F4, 0A, 91, DE, 32, DC, DB, 16, 87, 7E, ED, 98, 85, F0, D7, 32, 5B
    Hue Adjustmen = 0
    Noise Reduction = OFF
    0097 = 30, 32, 30, 37, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 5C, 59, 73, AA, FE, 6F, FC, 74, 71, 55, 56, 76, B3, 58, 98, 0D, C4, 91, 7B, 82, A6, E7, 45, C0, 58, 0D, DF, CE, D8, CA, 4D, 64, 28, C8, 87, 40, 4C, 3B, 89, 92, 44, CD, 63, 00, 00, D5, 11, 08, 94, 96, 8B, 2F, F4, E5, D7, 72, 28, C9, EF, E1, 28, 81, DB, F1, BD, 7B, D0, 48, DC, 0F, 5E, 48, 12, B6, 77, D6, 52, EB, A1, D9, 64, 71, 9B, E2, 46, C7, 65, 20, F8, 31, FF, 2E, 7A, E3, 69, 0C, CC, A9, A3, BA, EE, 3F, AD, 38, E0, A5, 87, 86, A2, DB, 31, A4, 34, E1, AB, 92, 96, B7, F5, 50, C8, 5D, 0E, DE, CB, D3, F8, 3C, 9D, 19, B3, 99, 3E, DA, 3D, 8A, B0, DF, 96, 36, F3, CB, C1, 37, 04, BB, BA, 42, E7, A7, 84, 80, 99, CD, 1F, 8E, 1A, C3, 89, 6C, 6C, 89, C1, 12, 8C, 41, CF, BD, 80, 86, A7, E6, 42, BB, 53, 09, D6, C9, CB, F2, 36, 97, 15, B0, 68, 3D, 2F, 3E, 6A, B3, 19, 9C, 3C, F9, D1, CB, DC, 01, 5F, DF, 52, DB, B7, 96, 92, AB, E3, 3B, A6, 69, DB, A2, 86, 87, A5, E0, 38, AD, 3E, EE, BB, A3, A8, CC, 0D, 69, E3, AA, 2E, 12, ED, 2C, 20, 80, C6, 46, E3, 9B, 71, 8B, 74, 7A, EA, 52, D7, 77, 34, 10, 09, 1D, 4E, 42, 0B, 93, 38, FC, DD, 8A, F3, 21, 7C, EF, 7F, 2A, F9, D4, D7, F4, 78, 8A, 2A, 97, 44, 11, E1, FD, 26, 67, C5, 64, D8, AD, 5F, 4F, 5A, A3, C8, 28, AC, A3, 07, DE, CA, DB, 6B, 5E, CC, 49, B2, A6, 8E, 77, 8D, CB, 10, 8C, 0F, B6, 76, 51, 5C, 23, A8, FE, 6F, FE, A2, 73, 59, 5C, 83, 46, EC, 75
    0098 = 30, 32, 30, 31, 49, 7D, 74, AA, FB, 01, CA, CF, 24, 62, 0B, 52, 96, 17, A5, 0A, 96, 87, 29, 82, A6, E7, 45, C0, 58, 0D, DF
    009A = 605/100, 605/100
    00A2 = 2043145
    00A3 = 0
    00A5 = 1403773204
    00A6 = 0
    Total Number of Shutter Releases for Camera = 1403773204
    00A8 = 30, 31, 30, 31, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
    Image optimisation = NORMAL
    Saturation = AUTO
    00B0 = 30, 31, 30, 30, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
    00B1 = 0


    [noparse][[/noparse]GPS]
    GPS Version ID = Version 2.2
    GPS Latitude Ref = North latitude
    GPS Latitude = 50°58.78'
    GPS Longitude Ref = West longitude
    GPS Longitude = 115°19.16'
    GPS Altitude Ref = Sea level
    GPS Altitude = 1775m
    GPS Time Stamp = 21:30:04 UTC
    GPS Satellites = 05
    GPS Map Datum = WGS 84
    GPS Date Stamp = 2008-10-10 UTC

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    24 bit LCD Breakout Board coming soon. $21.99 has backlight driver and touch sensitive decoder.
  • mctriviamctrivia Posts: 3,772
    edited 2009-10-27 01:36
    you will notice that the above picture has 2 files. the full quality Digital Negative File and the JPG. The files start with same name and it is easier to process the jpg. some times there is a wav file also with same name. output should be kept together with same name.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    24 bit LCD Breakout Board coming soon. $21.99 has backlight driver and touch sensitive decoder.
  • SRLMSRLM Posts: 5,045
    edited 2009-10-27 06:35
    BTW, my replies shouldn't be constructed as an agreement to produce the program. I will certainly give it a shot, but how much effort I dedicate is still up in the air. I just dusted off my Java book today, and even though the language is easy the meta-data part isn't. Still, I can probably generate a nice looking UI that you can then tie into your code (which, I admit, I am struggling through). I suspect that if I do take on the project I will start from scratch, and make a picture class.
  • mctriviamctrivia Posts: 3,772
    edited 2009-10-27 12:36
    I understand. They are good questions.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    24 bit LCD Breakout Board coming soon. $21.99 has backlight driver and touch sensitive decoder.
  • mctriviamctrivia Posts: 3,772
    edited 2009-10-27 19:24
    The program does not need to be java. i just have one that does the basics already in java.

    the first 2 functions are the important ones

    decTo21 - converts a number into base21 number. all versions of windows can properly sort base21 but not true of decimal. Also base 21 has no characters that look alike so makes for easy human referencing.

    dateTo21 - converts a time to 100th of a second into a 10 digit base21 number with GBBBBBBBBB being the start of 2000.

    I understand if no one is interested I have little to offer other then some electronics a bit of cash and the rights to use any of the posted code.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    24 bit LCD Breakout Board coming soon. $21.99 has backlight driver and touch sensitive decoder.
  • SRLMSRLM Posts: 5,045
    edited 2009-10-28 05:41
    I'm interested simply for the challenge. However, I'm quite rusty on how Java does imports (I'm used to C++), so I have to work around that.

    Anyway, the GUI part is pretty easy in Java. All you have to do is create various instances of the GUI elements, and set up an action function. It's nice because it is already built into Java: you don't need to bring classes from anywhere.
Sign In or Register to comment.