srcDoc.selection.copy() command not available in ps cs2trial

Photoshop Script Snippets - Note: Full Scripts go in the Photoshop Scripts Forum

Moderators: Tom, Kukurykus

hbmarar

srcDoc.selection.copy() command not available in ps cs2trial

Post by hbmarar »

Hi,

This is my first post and do not know whether this is the exact location but hope experts wont mind.

I reuest there help and suggestion.

***********
Hi,

Good Morning.

I wanted to slice one image to tiles and i got a script for it. I did not had a photoshop so I got Photoshop CS2 Version 9.0. This script was working fine but it says error over a copy command.


// We make sure our source image is the active document
var srcDoc = activeDocument;

//Select Area and Copy
srcDoc.selection.select(Array (Array(MyXO, MyYO), Array(MyXL, MyYO), Array(MyXL, MyYL), Array(MyXO, MyYL)), SelectionType.REPLACE, 0, false);
srcDoc.selection.copy();

//Paste to new Doc
var pasteDoc = documents.add(PixelWidth, PixelHeight, srcDoc.resolution, "Paste Target");
pasteDoc.paste();
pasteDoc = null;

//Save New Doc
var saveMe = activeDocument;


The error shown is

Error 8800: General Photoshop error occurred.The command copy is not currently available.LIne 69 -> srcDoc.Selection.Copy();

What is the replacment command that i could use for it or what is the command that i could use over any versions....

I could not find the Scripts menu option below automate where i could browse to this script and get the slicing in version 7. I could gind the scripts option ibelow Automate in files menu in Version 9 though but this says this error.

I hope here to have photoshop experts who could help me out.

regards

Harish

Observation: before showing the above pop-up error -> it makes the first 7 slice as set in the variables.

/*********
//**** YOU SHOULD CUSTOMIZE THE FOLLOWING VARIABLE DEPENDING ON YOUR NEED ****
var ZoomLevel = 2;

var FolderPath = "/Documents and Settings/harish/Desktop/images/Zoom"+ZoomLevel+"slices/";

// We start with the coordinates, zoom, and width of an upper left corner tile and generate everything from there
// We can calculate new tile values from these values for any zoom level without having to look up these details for each.
var OrgX = 1204; //<-- the X value
var OrgY = 1536; //<-- the Y value
var OrgZoomLevel = 5; //<-- the zoom level
var OrgTileWidth = 7; //<-- the number of tiles wide your full map area is
var OrgTileHeight = 7; //<-- the number of tiles high your full map area is


//**** EVERYTHING BEYOND HERE SHOULD NOT BE TOUCHED UNLESS YOU KNOW WHAT YOU ARE DOING!!!

// Exponent Function
// we will need this later
function PowMe(a, b){
var o = a;
for (n=1; n<b; n++){ o *= a; }
if (b==0){ o = 1; }
return o;
};

var StartX = OrgX*PowMe(2,(OrgZoomLevel - ZoomLevel));
var StartY = OrgY*PowMe(2,(OrgZoomLevel - ZoomLevel));
var xTiles = OrgTileWidth*PowMe(2,(OrgZoomLevel - ZoomLevel));
var yTiles = OrgTileHeight*PowMe(2,(OrgZoomLevel - ZoomLevel));

var PixelWidth = 256;
var PixelHeight = 256;

var TotalTiles = xTiles * yTiles;


preferences.rulerUnits = Units.PIXELS;


var xm = 0;
var ym = 0;

var TileX = StartX;
var TileY = StartY;



for (n=1; n<TotalTiles+1; n++) {

if (ym == yTiles){
xm += 1; //<-- Up the x value by 1, i.e. we move over to the next column
ym = 0; //<-- Reset the y value to 0 so we start back at the top of our new column
TileX += 1; //<-- Increase our Google X value for our file name
TileY = StartY; //We reset out Google Y value for out file name everytime we change columns
};


MyXO = xm*(PixelWidth);
MyXL = xm*(PixelWidth)+(PixelWidth);
MyYO = ym*(PixelHeight);
MyYL = ym*(PixelHeight)+(PixelHeight);

// We make sure our source image is the active document
var srcDoc = activeDocument;

//Select Area and Copy
srcDoc.selection.select(Array (Array(MyXO, MyYO), Array(MyXL, MyYO), Array(MyXL, MyYL), Array(MyXO, MyYL)), SelectionType.REPLACE, 0, false);
srcDoc.selection.copy();

//Paste to new Doc
var pasteDoc = documents.add(PixelWidth, PixelHeight, srcDoc.resolution, "Paste Target");
pasteDoc.paste();
pasteDoc = null;

//Save New Doc
var saveMe = activeDocument;

//Flatten
saveMe.flatten();

//Set path to file and file name
saveFile = new File(FolderPath + TileX+ "_" + TileY+ "_" + ZoomLevel + ".gif");
//Set save options
gifSaveOptions = new GIFSaveOptions();
gifSaveOptions.colors = 64;
gifSaveOptions.dither = Dither.NONE;
gifSaveOptions.matte = MatteType.NONE;
gifSaveOptions.preserveExactColors = 0;
gifSaveOptions.transparency = 0;
gifSaveOptions.interlaced = 0;

//Save the file and close it
saveMe.saveAs(saveFile, gifSaveOptions, true,Extension.LOWERCASE);
saveMe.close(SaveOptions.DONOTSAVECHANGES);

//Advance Y counter for next image
ym += 1;

//Advance Google Y value for next image name
TileY += 1;

}
hbmarar

srcDoc.selection.copy() command not available in ps cs2trial

Post by hbmarar »

i can't do so for the slice would be some 840 of an image and likewise i have some 28 images to do. Another concern is that the slices are called by a functional calcualtion by application and each sliced needs to be saved with x_y_value.gif... Here a layer would be having x changing values incrementally by one and each vertical layer changing y value incremented by 1.

I dont believe anyone would still approve that this could be manuaaly done for nearly 840*28 slices. Nearly impossible and this script slices and saves it in the name format also.

I would like to know would the trial versions have restriction of some commands for JSX or JS scripts. I am using the trial version and it says that copy() command is not available.

Observation : My client was able to do it using his photoshop with the same script and he before moving for vacation did one image slice for me.

Scripts works fine if i comment the line srcDoc.selection.copy(); with one image slice getting saved and goes on saving the same image.

Hope somebody would let me know what is wrong with PS CS2 version trial with copy() command or alternate command that i could use.

With regards

Harish
Mike Hale

srcDoc.selection.copy() command not available in ps cs2trial

Post by Mike Hale »

hbmarar wrote:Observation: before showing the above pop-up error -> it makes the first 7 slice as set in the variables.


The copy method is working or you would not have the first 7 slices.

I think the problem is that the 8th selection is off the canvas. When the script tries to make a selection that is off the canvas, no selection is made.

The error means photoshop can not copy the selection because there is no selection to copy.

Check your variables at the start of the script and make sure they match the document you are working with.

By the way, as far as I know the only limit on the trial version is how long you can use it.

Mike