У меня есть скрипт для изменения размера изображения. Есть ли в любом случае выводить 5 изображений? - PullRequest
0 голосов
/ 01 мая 2019
doc = app.activeDocument;  

// these are our values for the END RESULT width and height (in pixels) of our image
var fWidth = 1313;
var fHeight = 1750;

// do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
if (doc.height > doc.width) {
    doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
}
else {
    doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
}

// Makes the default background white
var white = new SolidColor(); 
white.rgb.hexValue = "FFFFFF";
app.backgroundColor = white;

// 2012, use it at your own risk;

#target photoshop

if (app.documents.length > 0) {
var myDocument = app.activeDocument;
var originalRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PERCENT;
myDocument.resizeCanvas(myDocument.width + 40, myDocument.height + 40, AnchorPosition.MIDDLECENTER)
app.preferences.rulerUnits = originalRulerUnits;
};

// our web export options
var options = new ExportOptionsSaveForWeb();
options.quality = 70;
options.format = SaveDocumentType.JPEG;
options.optimized = true;

var newName = 'test'+doc.name+'.jpg';

doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);

Я хочу иметь возможность генерировать 5 изображений с 5 различными размерами с помощью одного и того же сценария. Это так же просто, как повторять мой код несколько раз, или мне нужно сбросить некоторые переменные между ними?

Когда я пытаюсь просто скопировать мой код и изменить имя выходного файла и размеры, это происходит, но мой размер холста не сбрасывается и не изменяется в зависимости от текущего размера изображения. Просто продолжает расти. Есть ли способ изменить размер холста в зависимости от текущего размера изображения?

var sizes = [
{
    width: 1531,
    height: 1948
},
{
    width: 1303,
    height: 1954
},  
{
    width: 1066,
    height: 1909
}
 ];
doc = app.activeDocument;
// looping through all the sizes
for (var i = 0; i < sizes.length; i++)
{
    var cloneDoc = doc.duplicate(); // duplicates current document
    resizeAndSave(sizes[i].width, sizes[i].height); // passes width and height of sizes to function with your code
    cloneDoc.close(SaveOptions.DONOTSAVECHANGES); // closes the clone
    activeDocument = doc; // making sure that foremost document is the original doc
}

function resizeAndSave(fWidth, fHeight)
{
    //your code


// get a reference to the current (active) document and store it in a variable named "doc"




// these are our values for the END RESULT width and height (in pixels) of our image
//var fWidth = 1313;
//var fHeight = 1750;

// do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
activeDocument = doc;
if (doc.height > doc.width) {
    doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
}
else {
    doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
}

// Makes the default background white
var white = new SolidColor(); 
white.rgb.hexValue = "FFFFFF";
app.backgroundColor = white;

// 2012, use it at your own risk;

#target photoshop

if (app.documents.length > 0) {

var myDocument = app.activeDocument;

var originalRulerUnits = app.preferences.rulerUnits;

app.preferences.rulerUnits = Units.PERCENT;

myDocument.resizeCanvas(myDocument.width + 40, myDocument.height + 40, AnchorPosition.MIDDLECENTER)

app.preferences.rulerUnits = originalRulerUnits;

};

// our web export options

var options = new ExportOptionsSaveForWeb();
options.quality = 70;
options.format = SaveDocumentType.JPEG;
options.optimized = true;

var newName = 'test'+doc.name+'.jpg';

doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);

};

Ответы [ 2 ]

0 голосов
/ 02 мая 2019
doc = app.activeDocument;
var savedState = app.activeDocument.activeHistoryState



// get a reference to the current (active) document and store it in a variable named "doc"




// these are our values for the END RESULT width and height (in pixels) of our image
var fWidth = 1155;
var fHeight = 1471;

// do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
activeDocument = doc;
if (doc.height > doc.width) {
    doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
}
else {
    doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
}

// Makes the default background white
var white = new SolidColor(); 
white.rgb.hexValue = "FFFFFF";
app.backgroundColor = white;

// 2012, use it at your own risk;

#target photoshop

if (app.documents.length > 0) {
activeDocument = doc;
var cwidth = 2000;
var cheight = 2000;

var originalRulerUnits = app.preferences.rulerUnits;

app.preferences.rulerUnits = Units.PIXELS;

doc.resizeCanvas(cwidth, cheight, AnchorPosition.MIDDLECENTER)

app.preferences.rulerUnits = originalRulerUnits;

};

// our web export options

var options = new ExportOptionsSaveForWeb();
options.quality = 70;
options.format = SaveDocumentType.JPEG;
options.optimized = true

var newName = 'MIR'+doc.name +'-22_28'+'.jpg';

doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);

app.activeDocument.activeHistoryState = savedState

// these are our values for the END RESULT width and height (in pixels) of our image
var hWidth = 1141;
var hHeight = 1711;

// do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
activeDocument = doc;
if (doc.height > doc.width) {
    doc.resizeImage(null,UnitValue(hHeight,"px"),null,ResampleMethod.BICUBIC);
}
else {
    doc.resizeImage(UnitValue(hWidth,"px"),null,null,ResampleMethod.BICUBIC);
}

// Makes the default background white
var white = new SolidColor(); 
white.rgb.hexValue = "FFFFFF";
app.backgroundColor = white;

// 2012, use it at your own risk;

#target photoshop

if (app.documents.length > 0) {
activeDocument = doc;
var cwidth = 2000;
var cheight = 2000;

var originalRulerUnits = app.preferences.rulerUnits;

app.preferences.rulerUnits = Units.PIXELS;

doc.resizeCanvas(cwidth, cheight, AnchorPosition.MIDDLECENTER)

app.preferences.rulerUnits = originalRulerUnits;

};




// our web export options

var options = new ExportOptionsSaveForWeb();
options.quality = 70;
options.format = SaveDocumentType.JPEG;
options.optimized = true;

var newName = 'MIR'+doc.name+'-24_36'+'.jpg';

doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);

app.activeDocument.activeHistoryState = savedState

// these are our values for the END RESULT width and height (in pixels) of our image
var fWidth = 1058;
var fHeight = 1897;

// do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
activeDocument = doc;
if (doc.height > doc.width) {
    doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
}
else {
    doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
}

// Makes the default background white
var white = new SolidColor(); 
white.rgb.hexValue = "FFFFFF";
app.backgroundColor = white;

// 2012, use it at your own risk;

#target photoshop

if (app.documents.length > 0) {
activeDocument = doc;
var cwidth = 2000;
var cheight = 2000;

var originalRulerUnits = app.preferences.rulerUnits;

app.preferences.rulerUnits = Units.PIXELS;

doc.resizeCanvas(cwidth, cheight, AnchorPosition.MIDDLECENTER)

app.preferences.rulerUnits = originalRulerUnits;

};

// our web export options

var options = new ExportOptionsSaveForWeb();
options.quality = 70;
options.format = SaveDocumentType.JPEG;
options.optimized = true;

var newName = 'MIR'+doc.name+'-24_43'+'.jpg';

doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);

app.activeDocument.activeHistoryState = savedState

// these are our values for the END RESULT width and height (in pixels) of our image
var fWidth = 1360;
var fHeight = 1813;

// do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
activeDocument = doc;
if (doc.height > doc.width) {
    doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
}
else {
    doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
}

// Makes the default background white
var white = new SolidColor(); 
white.rgb.hexValue = "FFFFFF";
app.backgroundColor = white;

// 2012, use it at your own risk;

#target photoshop

if (app.documents.length > 0) {
activeDocument = doc;
var cwidth = 2000;
var cheight = 2000;

var originalRulerUnits = app.preferences.rulerUnits;

app.preferences.rulerUnits = Units.PIXELS;

doc.resizeCanvas(cwidth, cheight, AnchorPosition.MIDDLECENTER)

app.preferences.rulerUnits = originalRulerUnits;

};

// our web export options

var options = new ExportOptionsSaveForWeb();
options.quality = 70;
options.format = SaveDocumentType.JPEG;
options.optimized = true;

var newName = 'MIR'+doc.name+'-30_40'+'.jpg';

doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);

app.activeDocument.activeHistoryState = savedState






// get a reference to the current (active) document and store it in a variable named "doc"

0 голосов
/ 01 мая 2019

Вам необходимо сбросить или клонировать исходный документ в начале каждого цикла.Я предпочитаю клонирование, поэтому я бы сделал что-то вроде этого:

// creating array of sizes
var sizes = [
{
    width: 313,
    height: 750
},
{
    width: 413,
    height: 150
}, ];

// looping through all the sizes
for (var i = 0; i < sizes.length; i++)
{
    var cloneDoc = doc.duplicate(); // duplicates current document
    resizeAndSave(sizes[i].width, sizes[i].height); // passes width and height of sizes to function with your code
    cloneDoc.close(SaveOptions.DONOTSAVECHANGES); // closes the clone
    activeDocument = doc; // making sure that foremost document is the original doc
}

function resizeAndSave(fWidth, fHeight)
{
    //your code
};
...