9 Replies Latest reply on Feb 3, 2018 12:25 PM by schroef

    Mass export all images as individual JPEGs?

    rachellefacistolmata Level 1

      Hi! I am new to Indesign. I have a file that contains images with Photoshop clipping paths. I want to export all the clipped images in a folder. I have tried doing the "Copy Links To" and it successfully exported the original images. However, I do not want the original images but the clipped images instead. Is there a way for me to export all the clipped images as JPEG or TIFF and not the original linked image? In short, I want to export the images without their background. I hope I'm making sense. I have about 800-1000 images so a batch processing method would be highly appreciated.

       

      I actually found a way to export the images the way I want them to be. I just need to click the image container (not the image), go to File>Export and then export it as JPEG. In the pop up window, I choose export selection, maximum quality, and 2400 resolution. It exports the images the way I want them to be. But I have to do this one by one. I just have two concerns:

      1. Is there a way for me to do this by batch? Like select all the image containers and export them one by one automatically?

      2. Is there a way to automatically name the saved files according to the original image name?

       

      Thank you for your help!

        • 1. Re: Mass export all images as individual JPEGs?
          rachellefacistolmata Level 1

          I found this script in another forum and modified it a bit to suit my needs. It appears to work in most of my INDD documents, but it fails in others. I wonder why. I get the error message that

          Error string: null is not an object

          Source: fileName = File ( rect.graphics[0].itemLink.filePath ).name;

           

          I also noticed that it skips some objects and doesn't download all of the images.

           

          test();

          function test()

          {

           

          var myDoc = app.activeDocument,

          apis = myDoc.allPageItems, rect, fileName;

           

          while ( rect = apis.pop() )

          {

              if ( !(rect instanceof Rectangle) || !rect.graphics[0].isValid ){ continue; }

           

           

              fileName = File ( rect.graphics[0].itemLink.filePath ).name;

              fileName = fileName.replace( /\.[a-z]{2,4}$/i, '.jpg' );

           

           

              app.jpegExportPreferences.exportResolution = 2400;

              app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;

           

           

              //give it a unique name

              var myFile = new File ("C:/Users/RANFacistol-Mata/Desktop/Image Trial/"+ fileName);

           

           

              rect.exportFile(ExportFormat.JPG, myFile);

          }

          }

           

           

          Is there a way for me to modify this script such that instead of iterating through all the rectangles, I would iterate through all the objects instead, much like clicking this icon.Next.PNG

           

          And then check if that object contains an image. If it does, then I will export it as scripted above.
          Thanks!

          1 person found this helpful
          • 2. Re: Mass export all images as individual JPEGs?
            Jump_Over Level 5

            Hi,

             

            I suggest to iterate through links instead of objects ==> so no link means no action

            starting part of code:

            var
                myDoc = app.activeDocument,
                apis = myDoc.links.everyItem().getElements(),
                rect, fileName;
            while ( rect = apis.pop() )
            {
                rect = rect.parent.parent;
                if ( !(rect.hasOwnProperty ("graphics") ){ continue; }
                fileName = File ( rect.graphics[0].itemLink.filePath ).name;
            //.....
            

             

            Jarek

            1 person found this helpful
            • 3. Re: Mass export all images as individual JPEGs?
              rachellefacistolmata Level 1

              Hello Jarek,
              Thank you for this suggestion. You're right. It's actually more efficient to iterate through the links than through the objects. However, I have one more concern. Not all of my linked images are in a rectangle. Some of them are in polygons, and some are in arbitrary shapes (like the edges have been followed). Can you suggest a way for me to catch those instances too?
              Thanks!

              • 4. Re: Mass export all images as individual JPEGs?
                rachellefacistolmata Level 1

                Hi Jarek,
                Your solution works like a charm.
                Thank you!

                • 5. Re: Mass export all images as individual JPEGs?
                  Jump_Over Level 5

                  Hi,

                   

                  var rec covers all 'graphic' shapes. (link.parent.parent)

                  Its name is just left to reduce modifications

                   

                  Jarek

                  • 6. Re: Mass export all images as individual JPEGs?
                    Trevorׅ Adobe Community Professional

                    Hi Rachelle

                     

                    I think Jarek has answered your question so please mark his answer as correct

                     

                    Trevor

                    • 7. Re: Mass export all images as individual JPEGs?
                      schroef Level 1

                      Is there a method for rachellefacistolmata script to export the image but take the orginal linked image into account. Now it exports a JPG using the frames ratio.

                       

                      Not sure if this is clear, ive added some screengrabs to make it more clear

                       

                      Placed image

                      Screen Shot 2018-01-30 at 11.13.39 AM.png

                       

                      exported image

                      Screen Shot 2018-01-30 at 11.07.51 AM.png

                       

                      Original linked image

                      Screen Shot 2018-01-30 at 11.08.57 AM.png

                       

                      My guess its due to the "

                      rect = rect.parent.parent;

                      if (!(rect.hasOwnProperty("graphics"))) {

                      "

                      • 8. Re: Mass export all images as individual JPEGs?
                        Jump_Over Level 5

                        Hi,

                         

                        In other words - is your goal to rename/change directory of original file instead of export?

                        if so there is a method:

                        oldFile.copy(newFile);
                        

                         

                        Jarek

                        • 9. Re: Mass export all images as individual JPEGs?
                          schroef Level 1

                          @Jarek,

                          Not sure if you directed it at me. But i asked this question on StacjExchange as well and good help there. The script now exports the image and not images in form of the rectangle. I didnt even know that wa possible, exporting the shape from indesign?

                           

                          Anyways here's the script if other would perhaps need it or change it. Better take out those alerts, perhaps the done can stay but the other is sort of useless

                           

                          var myDoc = app.activeDocument,
                            apis = myDoc.links.everyItem().getElements(),
                            items, fileName;
                          var i = 0;
                          var MyPath = "C:/Users/xx/Desktop/test/"; // change your path here
                          
                          alert("Script is running. Press OK and wait until done...");
                          
                          while (items = apis.pop()) {
                            items = items.parent.parent;
                             if (!(items.hasOwnProperty("graphics"))) {
                             continue;
                             }
                            i++;
                             try {
                            fileName = File(items.graphics[0].itemLink.filePath).name;
                            fileName = i + "_" + fileName.replace(/\.[a-z]{2,4}$/i, '.jpg');
                             } catch (e) {};
                          
                            app.jpegExportPreferences.exportResolution = 2400;
                            app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;
                          
                             //give it a unique name
                             var myFile = new File(MyPath + fileName);
                          
                            items.graphics[0].exportFile(ExportFormat.JPG, myFile);
                          }
                          
                          alert("Done");