Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
11

[Javascript]How to scale an image using a script.

Community Beginner ,
Nov 06, 2023 Nov 06, 2023

Does anyone have javascript code that will successfully resize my image after placing?

var newGraphic = newFrame.place(img_file)[0];

I've spent hours and all the techniques posted all over the web don't work or prduce the dreaded...

"This value would cause one or more objects to leave the pasteboard."

My image is 72dpi jpg 448x2772.

 

The only reason I'm trying to rescale it is that the place() function brings it in at a giant size.

TOPICS
Scripting
678
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Participant , Nov 06, 2023 Nov 06, 2023

I recommend creating a frame in the desired size first and then placing the image in it:

var imgFrame = app.activeWindow.activePage.rectangles.add({
	geometricBounds: ["0px", "0px", 2772/2 + "px", 448 / 2 + "px"]
});

var imgFile = new File("/path/to/your/image.jpg");
imgFrame.place(imgFile);
imgFrame.fit(FitOptions.PROPORTIONALLY);

 

Translate
Participant ,
Nov 06, 2023 Nov 06, 2023

I recommend creating a frame in the desired size first and then placing the image in it:

var imgFrame = app.activeWindow.activePage.rectangles.add({
	geometricBounds: ["0px", "0px", 2772/2 + "px", 448 / 2 + "px"]
});

var imgFile = new File("/path/to/your/image.jpg");
imgFrame.place(imgFile);
imgFrame.fit(FitOptions.PROPORTIONALLY);

 

____________________
Robotic Process Automation in Desktop Publishing (Book): https://doi.org/10.1007/978-3-658-39375-5
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Nov 06, 2023 Nov 06, 2023

Thank you. That works!

Now to figure out how to slide the image around inside the frame.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 06, 2023 Nov 06, 2023

You can use move(). 

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Nov 06, 2023 Nov 06, 2023

You can give the exact coordinates of the placed image inside the frame:

imgFrame.images[0].geometricBounds = ["0px", "0px", "800px", "400px"];

Or you can use the move() method:

imgFrame.images[0].move(["100px", "50px"]);

 

____________________
Robotic Process Automation in Desktop Publishing (Book): https://doi.org/10.1007/978-3-658-39375-5
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 06, 2023 Nov 06, 2023

Move can accept either "to" or "by" values. 

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Nov 06, 2023 Nov 06, 2023

Ah, I'll give that try.

Thanks again.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 07, 2023 Nov 07, 2023
LATEST

the dreaded..."This value would cause one or more objects to leave the pasteboard."

 

Hi @defaultzzc0qcmhdex6 , An alternate way to do this is by transforming the image, which avoids the pasteboard problems. This function places the selected image on the page and transforms it and its frame to the provided parameter as inches:

 

 

//parameter is the tansformed image width as inches
placeSize(5)

/**
* Transforms the placed image to the provided width in inches 
* @ param pw the placed width 
* @ return the image parent frame 
*/
function placeSize(pw){
    app.scriptPreferences.measurementUnit = MeasurementUnits.INCHES;
    var f = File.openDialog("Select the file", "");
    var img = app.activeWindow.activePage.place(File(f))[0];
    var aw = img.geometricBounds[3]-img.geometricBounds[1];
    img.transform(CoordinateSpaces.innerCoordinates, AnchorPoint.TOP_LEFT_ANCHOR, app.transformationMatrices.add({horizontalScaleFactor:pw/aw, verticalScaleFactor:pw/aw}));
    img.parent.fit(FitOptions.FRAME_TO_CONTENT);
    app.scriptPreferences.measurementUnit = AutoEnum.AUTO_VALUE;
    return img.parent
}

 

 

 

 

This image, which has an output dimension of 135" x 92" (9725 x 6625 px @ 72ppi), gets placed at 5" x 3.4062" with an Effective Resolution of 1945 ppi:

 

Screen Shot 13.pngexpand image

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines