Announcement

Collapse
No announcement yet.

Snapshots. My long missed Snapshots "are back". Great!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Originally posted by MAU View Post
    Anyway, and independently of how they are created and work, I understand they are just links, right? And if so, I still don't quite understand why and how you used them. I'll give you an example of how I understand they work and, if you don't mind, please correct me if any of my assumptions are wrong.
    The idea is pretty simple. In a NTFS file system the file is located somewhere on the hard disk and a pointer to this file is located in a directory. The idea now is to create another pointer to the same file. This new pointer may have a completely different name or path but it must be stored on the same partition. Then you have two full qualified file names both pointing to the same file. (The NTFS file system allows a maximum of 1024 pointers to a single file.)

    So, if you create a hard link to a raw file AC will 'see' two different files and create individual XMP files for both. But the raw file in reality will exist only once in the partition.

    With these to pointers you can do what ever you want: rename, move or delete. All other pointers will not be affected and the file itself will remain untouched until the last existing pointer is deleted.

    This only describes how hard links can be use full with AC. There are many more flavours of links like 'symbolic links' or 'junctions' . This page describes them in a much better way than I can. It also offers an extension for the windows explorer. AC isn't able to create hard links itself, but a short batch using the 'mklink' command line program and added as external editor does it swiftly.



    Last edited by Emil; 03-23-2016, 01:06 AM. Reason: typos

    Comment


    • #17
      Hi Emil,

      Thank you for responding to my request for clarification.

      So if you create a hard link to a raw file AC will 'see' two different files and create separate XMP files for both. But the raw file in reality will exist only once in the partition.
      OK, this explains it. You can create separate XMP files. Smart! But there is a further question. If the raw file exists only once in the partition, what about metadata? It will be the same for al 'files', correct?.

      I will take a more detailed look at the Link Shell Extension.

      Thanks,

      MAU

      Comment


      • #18
        If there is no xmp file AC will read the meta data from the raw file (mainly exif). So they are identical for the original file and all of it's hard links. But AC will write any changes and additions to individual xmp files, so all meta data is completely separated. From AC's view the original file and it's hard links are different files. However, the batch I use will not only create a hard link for the file, but also copies the xmp file if it exists. If the meta data has been edited in AC before I create a hard link, the meta data will also be copied. Afterwards the original and the hard link will both show the same meta data. This of course includes all development settings. But afterwards all changes to the meta data will only affect the currently selected file.

        If I don't need a hard link any more I simply delete it within AC and it will also automatically delete the matching xmp file.

        For me this is just perfect to have several versions of one photo without the need to copy the raw data. All versions have their own development settings and meta data. They also can be attached to different collections, categories or what ever.

        Of course all this only applies to raw files, that AC will create side car xmp files for. It doesn't make sense to be used with JPG or TIFF files because these file types have their meta data embedded within the file itself. This also is another reason why I prefer native raw files over Adobes dng.
        Last edited by Emil; 03-23-2016, 02:00 AM.

        Comment


        • #19
          Hi Emil,

          Thanks for the explanation. I had completely forgot that if AC changes something in the metadata of a RAW image it will write the changes to the corresponding xmp file. I think I'm getting old

          One of these days I will try the Link Shell Extension.

          Thanks again,

          MAU

          Comment


          • #20
            Hola Miguel - In reading your lengthy post #15 above, I see that you have examined the contents of the XMP file and that you now fully understand how the Snapshots feature works. Well done. In my original suggestions for ACDSee's Virtual Copies, I imagined multiple separate XMP files pointing to a single original image. Instead, the Developers figured out how to put everything inside the one XMP file. This is a very clever technical design in my view.

            Regarding the issue of the Done button vs. "Update from current settings", here are my thoughts. I think that the XMP file should never be updated until the Done button is pressed -- including all changes to Snapshots. That means that all Develop Mode changes (including Snapshots) would have to be "accumulated" by the program (e.g. in Ram or temp storage), but not actually update the XMP file until the user presses Done.

            It seems to me that most of the Quirks that we have discovered would not exist if my method (accumulating all changes) had been programmed in the first place. I'm going to push hard for this approach in Ultimate 10. Meanwhile, if you are careful in how you use Snapshots, it is a wonderful tool that I utilize quite often.

            Regards, Bill

            Comment


            • #21
              Originally posted by LV_Bill View Post
              In my original suggestions for ACDSee's Virtual Copies, I imagined multiple separate XMP files pointing to a single original image.
              I think this couldn't be done because it would not follow the format and naming scheme of the Extensible Metadata Platform and would make ACDSee xmp files incompatible with other software.

              Comment


              • #22
                Hola Bill - Once upon a time last century I was involved in software development for many years, so understanding XML language was easy. Knowing/seeing when the .xmp file is written/updated was done with the help of my Texpad text editor, which will warn you if a file you are looking at is updated by another application.

                Regarding the issue of the Done button vs. "Update from current settings", here are my thoughts. I think that the XMP file should never be updated until the Done button is pressed -- including all changes to Snapshots. That means that all Develop Mode changes (including Snapshots) would have to be "accumulated" by the program (e.g. in Ram or temp storage), but not actually update the XMP file until the user presses Done.
                At first sight I don't think that accumulating the way you suggest would be a good idea, I have to think more about and try to see what the pros and cons would be. Also, I'm beginning to think that the option "Update from current settings" is not really needed and that the mere existence of this option may confuse some users about what snapshots are, how they work and how to use them.

                Cheers,
                MAU

                Comment


                • #23
                  Users of exiftool might want to extract snapshot data from outside of AC. So here's a config file that adds the composite tags SnapshotNames and SnapshotCount.

                  Here's sample output:

                  >exiftool -config acdsee.config DSC_0001.xmp -ver -SnapshotCount -SnapshotNames
                  10.13
                  Snapshot Count : 3
                  Snapshot Names : 11.12.2015 22:18:37; 16.02.2016 22:18:40; 19.02.2016 15:31:01

                  This output shows the version of exiftool, the number of defined snapshots and the names of the snapshots separated by semicolons (semicola?).

                  content of acdsee.config:
                  Code:
                  %Image::ExifTool::UserDefined = (
                      'Image::ExifTool::Composite' => {
                          SnapshotCount =>  {
                              Require => 'xmp-acdsee:Snapshots',
                              ValueConv => q{ @$val },
                          },
                          SnapshotNames =>  {
                              Require => 'xmp-acdsee:Snapshots',
                              ValueConv => q{
                                  my $s="";
                                  foreach (@$val) {
                                      my $v = $$_;
                                      my $index = index($v,'<?xml');
                                      my $name = substr($v,0,$index);
                                      if (length($s) > 0){ $s .= "; ";};
                                      $s .=  $name ;
                                  }
                                  return $s;
                              }
                          },
                      },
                  );
                  
                  
                  # ACDSee namespace (acdsee) (ref PH)
                  # (1) this tag is unique
                  # (2) this tag is mapped from another tag, see comments
                  # (3) there exists a matching iptc tag (see comment) that ac recognises when found,
                  #      but it will only write it's proprietary tag
                  
                  %Image::ExifTool::XMP::acdsee = (
                      %xmpTableDefaults,
                      GROUPS => { 0 => 'XMP', 1 => 'XMP-acdsee', 2 => 'Image' },
                      NAMESPACE => 'acdsee',
                      NOTES => q{
                          ACD Systems ACDSee namespace tags.
                  
                          (A note to software developers: Re-inventing your own private tags instead
                          of using the equivalent tags in standard XMP namespaces defeats one of the
                          most valuable features of metadata: interoperability.  Your applications
                          mumble to themselves instead of speaking out for the rest of the world to
                          hear.)
                      },
                     # These are additional tags unknown to exiftool 10.10
                      # The brand new version 10.13 defines some oft these in a different way, so for now I overwrite them
                      EditStatus => { }, #see (3) matches iptc:EditStatus for NEF but not xmp files
                      FixtureIdentifier => { }, #see (3} matches iptc:FixtureIdentifier for NEF but not xmp files
                      ObjectCycle => { },    #see (3} matches iptc:ObjectCycle for NEF but not xmp files
                      OriginatingProgram => { }, #see (3} matches iptc:OriginatingProgram  for NEF but not xmp files
                      ReleaseDate => { }, #see (3} matches iptc:OriginatingProgram  for NEF and xmpDM:ReleaseDate for xmp files
                      ReleaseTime => { },
                      Snapshots => { # see (1)
                          Name => 'Snapshots',    
                          Groups => { 2 => 'Image'  },
                          List => 'Bag',
                          Notes => 'Collection of alternate DPPs',
                          Binary => 1,
                      },
                  );
                  
                  #------------------------------------------------------------------------------
                  1;  #end

                  Comment


                  • #24
                    Originally posted by Emil View Post
                    AC isn't able to create hard links itself, but a short batch using the 'mklink' command line program and added as external editor does it swiftly.
                    Hi Emil,

                    I did finally download and install the Link Shell Extension and it works a treat. Thanks again for pointing me in that direction, I can now create and use Virtual Copies in Ultimate 9 because hardlinks are and can be used as Virtual Copies,

                    But in the quoted text you talk about using a short batch, why? I can create hardlinks from within AC: 1) Ctrl+Right Click on the file and select Pick Link Source from the context menu, and then 2) On the folder tree, Ctrl+Right Click on the destination folder and select 'Drop as'. As I say, it works a treat. Then, if needed/wanted, you can do a Metadata/Copy and Metadata/Paste to copy the metadata (IPTC and ACDSee Metadata) of the original file. Same thing with develop settings. If original image is already developed and you want the virtual copy to have the same settings, do a Process/Copy Settings and a Process/Paste Settings.

                    In case it is of interest to anyone, although taking about Lightroom, this page gives a simple explanation about Develop Snapshots and Virtual Copies.

                    Finally, one more difference between Develop Snapshots and Virtual Copies. Virtual Copies can have/contain their own Snapshots, but not the other way around.

                    Cheers,

                    MAU

                    Comment


                    • #25
                      It's the 'and' in your work flow :-) I've written the batch to do it all with just one keystroke:

                      - Check if the file is a RAW - if not a simple copy is created
                      - Create the hard link in the same folder - I never move any master file
                      - Append '-variante' to the name (this may be changed later within AC or anywhere else)
                      - copy the xmp file if it exists

                      It also is able to create several hard links on a small set of selected files is one run. The batch is called as external editor and also has the short key CTRL-ALT-V assigned.

                      Code:
                      @setlocal enableextensions enabledelayedexpansion
                      @echo off
                      
                      pushd
                      
                      set append=-variante
                      set raws=.nef.cr2.orf.NEF.CR2.ORF
                      
                      :Loop
                      IF .%1.==.. GOTO raushier
                                  : Name der Datei ohne Dateityp
                                  set oldname=%~d1%\%%~p1%\%%~n1&%
                                  : Dateityp der Datei
                                  set ext=%~x1%
                                  
                                  : Name für die Kopie finden
                                  set  n=0
                                  :loop1
                                  set /a n=%n% + 1
                                  set newname=%oldname%%append%%n%
                                  if exist "%newname%%~x1%" goto loop1
                                  
                                  : ist es eine RAW?
                                  if not "x!raws:%str1%=!"=="x%raws%" goto RAW
                                  
                                : TIF, JPG, PNG ... unterstützen leider keine XMP-Dateien, also wird schlicht kopiert
                                  copy "%oldname%%ext%" "%newname%%ext%"
                                  goto cont
                                  
                                  :RAW
                                  : mklink ist Bestandteil von Windows, funktioniert aber nur mit NTFS
                                  mklink /H "%newname%%ext%" %1
                                  : ln gehört zu den Unixtools und muß ggf. installiert werden.
                                  : es unterstützt NTFS und die Unix-Dateisysteme (EXT3, EXT4 ...)
                                  :ln %1 "%newname%%ext%"
                                  : ggf. XMP-Datei kopieren
                                  if exist "%oldname%.xmp" copy "%oldname%.xmp" "%newname%.xmp
                            
                            :cont
                                  : mit der nächsten Datei weitermachen
                            SHIFT
                      GOTO Loop
                      
                      
                      :raushier
                      popd
                      Have mercy, it's just a lazy Sunday afternoon hack I wrote many years ago.

                      Comment


                      • #26
                        Originally posted by Emil View Post
                        It's the 'and' in your work flow :-) I've written the batch to do it all with just one keystroke:

                        - Check if the file is a RAW - if not a simple copy is created
                        - Create the hard link in the same folder - I never move any master file
                        - Append '-variante' to the name (this may be changed later within AC or anywhere else)
                        - copy the xmp file if it exists

                        It also is able to create several hard links on a small set of selected files is one run. The batch is called as external editor and also has the short key CTRL-ALT-V assigned.

                        Have mercy, it's just a lazy Sunday afternoon hack I wrote many years ago.
                        Hi Emil,

                        It is a nice little script that I could never write but that I can understand (except for part of the comments)

                        I don't use or foresee using/needing virtual copies often, but I will copy and save the script just in case. For occasional copies I will take the long route with the extension.

                        Thanks,

                        MAU

                        Comment


                        • #27
                          Pulling up this old thread, just to say thank you Emil

                          This is a very, very useful little hack. I was thinking of a way to compare two different versions of a snapshot in view mode. Now I guess these "Virtual Copies" or Variants come as close as possible to my requirements.

                          After my recent evaluation of another tool (C1), this was the only real feature I've seen there that I truly missed having in ACDSee.

                          The only thing that disrupts my workflow a little is that Manage Mode will pick up the new file at the end of the list of current files, and I have to reload one time so that it appears next to the source of the copy. But I guess that's one thing I can live with. Also, I should not forget to embed ACDSee metadata into the XMP of the original, so that categories etc don't get lost in the fresh copy.

                          Cheers,
                          Janto

                          Comment


                          • #28
                            Originally posted by Janto View Post
                            The only thing that disrupts my workflow a little is that Manage Mode will pick up the new file at the end of the list of current files, and I have to reload one time so that it appears next to the source of the copy.
                            Jepp, I'm aware of this really annoying quirk, but I currently don't have a fix for this.

                            Comment

                            Working...
                            X