4 Replies Latest reply on Jan 29, 2017 6:29 AM by natrev

    Help Needed! Crop and Padding with script

    natrev Level 3

      Hi Everyone!

       

      I have one Photoshop document 3600Px (W) X 3600px (H) x 300 dpi which contain one product with overall photoshop path.

      Now I get a selection from the path & expand 50px and crop the image 1760x1760x300.

      Subsequently, I check the padding was not 50 px from the edge of the product.

       

      If suppose I expand 40px and crop the image. the image padding 50px around the image.

      How do I get exact expand pixel value? Please suggest me.

       

      -yajiv

       

      Code:

       

       if ( app.documents.length <= 0 ) alert( strAlertDocumentMustBeOpened,"Smart Size" );
      else{  main(); }
      
      function main(){
          app.preferences.rulerUnits = Units.PIXELS;
          app.preferences.typeUnits = TypeUnits.PIXELS;
          app.displayDialogs = DialogModes.NO;
          var docRef = app.activeDocument;
          var dname = docRef.name; 
          var fileName=dname.replace(/\.[^\.]+$/, '');
          var filePath=activeDocument.path;
          var myLayers=docRef.layers       
          docRef.pathItems[0].makeSelection(0,true,SelectionType.REPLACE);
          docRef.selection.expand(50)
          docRef.crop(docRef.selection.bounds);        
          var imgW=docRef.width;
          var imgH=docRef.height;
          if(imgW>imgH){
              docRef.resizeImage(new UnitValue(1760,'Px'), undefined, 300, ResampleMethod.AUTOMATIC);
              docRef.resizeCanvas( undefined,new UnitValue(1760,'Px'),AnchorPosition.MIDDLECENTER);
          }else{
              docRef.resizeImage(undefined, new UnitValue(1760,'Px'),300, ResampleMethod.AUTOMATIC);
              docRef.resizeCanvas( new UnitValue(1760,'Px'),undefined,AnchorPosition.MIDDLECENTER);
          }
      }
      
        • 1. Re: Help Needed!
          SuperMerlin Level 5

          Would this work?

          #target photoshop;
          app.bringToFront();
          
          main();
          function main(){
          if(!documents.length) return;
          try{
          var doc = app.activeDocument;
          app.displayDialogs = DialogModes.NO;
          var strtRulerUnits = app.preferences.rulerUnits;
          var strtTypeUnits = app.preferences.typeUnits;
          app.preferences.rulerUnits = Units.PIXELS;
          app.preferences.typeUnits = TypeUnits.PIXELS;
          if(doc.pathItems.length){
          doc.pathItems[0].makeSelection(0,true,SelectionType.REPLACE); 
          app.activeDocument.selection.expand(50);
          executeAction( charIDToTypeID( "Crop" ), undefined, DialogModes.NO );
          var Max = Math.max(doc.width.value,doc.height.value);
          app.activeDocument.resizeCanvas(Max, Max, AnchorPosition.MIDDLECENTER);
          doc.resizeImage( undefined,1760, 300, ResampleMethod.AUTOMATIC);
          }
          
          }catch(e){
          }
          finally{
          app.preferences.rulerUnits = strtRulerUnits;
          app.preferences.typeUnits = strtTypeUnits;
          };
          };
          
          
          
          
          • 2. Re: Help Needed!
            natrev Level 3

            Hi Merlin,

             

            Thank you for the prompt response.

             

            Still I get same problem and the image padding size less than 50px.

             

            Please advice.

             

            -yajiv

            • 3. Re: Help Needed!
              SuperMerlin Level 5

              Have you an example file I could test with ?

              • 4. Re: Help Needed!
                c.pfaffenbichler Level 9

                Why not use the Selection’s bounds as the basis of a calculation instead of expanding the Selection?

                If you resample the image after expanding the Selection is seems hardly surprising that the original 50px »frame« can change, so you may want to first resample, then create the Selection etc.