批量更改圖片尺寸的ps腳本
用于批量更改打開(kāi)的圖片的尺寸的photoshop 腳本 (javascript)。
操作對(duì)象:
當(dāng)前打開(kāi)的所有文檔;(注意不要有尚未保存過(guò)的新建的文檔,或無(wú)法直接保存的文檔,否則會(huì)中斷批處理)
用法:
把解壓出來(lái)的 “改變尺寸.jsx” 文件復(fù)制到 “ps安裝目錄\預(yù)置\腳本” 下,重新打開(kāi)ps以后就可以在~
[菜單- 文件-腳本] 里面找到 “改變尺寸”
或者解壓出來(lái),在開(kāi)著ps的情況下,直接雙擊也可以用。

操作結(jié)果:
直接覆蓋保存并關(guān)閉文檔。(最好復(fù)制一個(gè)文件夾,然后再打開(kāi)圖片執(zhí)行這個(gè)操作,不然就沒(méi)有原始文件嘍)
目前只在cs3中文版上測(cè)試通過(guò)
若其他ps版本有問(wèn)題,或者有什么bug還請(qǐng)多多反饋!謝謝!
對(duì)這個(gè)沒(méi)什么研究,剛學(xué)~尚苦于沒(méi)有資料,更歡迎高人多多指點(diǎn)
附上代碼,方便大家指正:
#target photoshop
app.bringToFront();
// 帶自動(dòng)判斷橫豎的統(tǒng)一長(zhǎng)寬操作,對(duì)當(dāng)前所有打開(kāi)文檔進(jìn)行操作。因?yàn)槭侵苯颖4骊P(guān)閉,原文件要注意備份!
if (app.documents.length == 0){
alert("請(qǐng)打開(kāi)至少一個(gè)文件");
}else{
var PRESOLUTION = 72;
app.preferences.rulerUnits = Units.PIXELS;
res ="dialog { \
text:'批量尺寸調(diào)整 - 直接覆蓋保存-請(qǐng)注意備份',\
group: Group{orientation: 'column',alignChildren:'left',\
corrdination: Panel { orientation: 'row', \
text: '需要尺寸', \
x: Group { orientation: 'row', \
s: StaticText { text:'長(zhǎng):' }, \
e: EditText { preferredSize: [50, 20] } ,\
p: StaticText { text:'pixel' }, \
}, \
y: Group { orientation: 'row', \
s: StaticText { text:'寬:' }, \
e: EditText { preferredSize: [50, 20] }, \
p: StaticText { text:'pixel' }, \
} \
}, \
a:Group{ orientation: 'row', \
c: Checkbox { preferredSize: [16, 16]} ,\
s: StaticText {text:'保持原圖長(zhǎng)寬比,新尺寸僅作外框限定'},\
}, \
b:Group{ orientation: 'row', \
c: Checkbox { preferredSize: [16, 16]} ,\
s: StaticText {text:'不判斷原圖橫豎'},\
}, \
},\
buttons: Group { orientation: 'row', alignment: 'right',\
Btnok: Button { text:'確定', properties:{name:'ok'} }, \
Btncancel: Button { text:'取消', properties:{name:'cancel'} } \
} \
}";
win = new Window (res);
win.buttons.Btncancel.onClick = function () {
this.parent.parent.close();
}
win.group.a.c.onClick = function(){ //如果勾選了a,則b被鎖定
if(win.group.a.c.value){
win.group.b.c.value=true;
}
}
win.group.b.c.onClick = function(){
if(win.group.a.c.value){
win.group.b.c.value=true;
}
}
win.buttons.Btnok.onClick = function () {
var x=Number(win.group.corrdination.x.e.text);
var y=Number(win.group.corrdination.y.e.text);
var a=win.group.a.c.value;
var b=win.group.b.c.value; //選中則不顛倒橫豎,以輸入值為準(zhǔn)
if (!b && x<y){ //確保PW>=PH
var PW=y
var PH=x
}else{
var PW=x
var PH=y
}
while (app.documents.length){
var docRef = app.activeDocument; // 當(dāng)前活動(dòng)文檔為操作對(duì)象
var dw = docRef.width;
var dh = docRef.height;
var fw = PW;
var fh = PH;
if(!b && dh>dw){
fw = PH;
fh = PW;
}
if(a){
w1 =dw/fw;
h1 =dh/fh;
if(w1>h1){
fh =dh/w1;
}else{
fw =dw/h1;
}
}
docRef.resizeImage(fw, fh, PRESOLUTION, ResampleMethod.BICUBIC);
docRef.save();
docRef.close(); //關(guān)閉當(dāng)前文檔
}
this.parent.parent.close();
}
win.center();
win.show();
}

可以把當(dāng)前文檔(包括未保存過(guò)的)直接修改尺寸并保存為jpg。(注意會(huì)關(guān)閉當(dāng)前文檔?。?br />可以針對(duì)整個(gè)文件夾進(jìn)行操作。(程序設(shè)定為“不包括隱藏文件”,因此不想處理和不能處理的文件可以先設(shè)置為[隱藏]屬性)
可選擇另存jpg 至另一個(gè)文件夾。
另存時(shí)支持文件名前后添加字符。
附上代碼,方便大家指正:
#target photoshop
app.bringToFront();
// 帶自動(dòng)判斷橫豎的統(tǒng)一長(zhǎng)寬操作。默認(rèn)是直接保存關(guān)閉,原文件要注意備份! v1.11 - 2008.2.23
var PRESOLUTION = 72;
app.preferences.rulerUnits = Units.PIXELS;
res ="dialog { \
text:'批量尺寸調(diào)整 ',\
group: Group{orientation: 'column',alignChildren:'left',\
top:StaticText{text:'默認(rèn)為直接覆蓋保存 - 請(qǐng)注意選擇或做好備份',align:'left'},\
corrdination: Panel { orientation: 'row', \
text: '需要尺寸', \
x: Group { orientation: 'row', \
s: StaticText { text:'寬:' }, \
e: EditText { preferredSize: [50, 20] } ,\
p: StaticText { text:'px' }, \
}, \
y: Group { orientation: 'row', \
s: StaticText { text:'高:' }, \
e: EditText { preferredSize: [50, 20] }, \
p: StaticText { text:'px' }, \
} ,\
}, \
a:Group{ orientation: 'row', \
c: Checkbox { preferredSize: [16, 16]} ,\
s: StaticText {text:'保持原圖長(zhǎng)寬比,新尺寸僅作外框限定'},\
}, \
b:Group{ orientation: 'row', \
c: Checkbox { preferredSize: [16, 16]} ,\
s: StaticText {text:'不判斷原圖橫豎'},\
}, \
now:Group{ orientation: 'row', \
c: Checkbox { preferredSize: [16, 16]} ,\
s: StaticText {text:'對(duì)文件夾進(jìn)行操作(否則處理所有目前打開(kāi)的文檔)'},\
}, \
folderO:Group{ orientation: 'row', \
b: Button {text:'待處理文件夾', properties:{name:'open'} ,helpTip:'選擇您需要處理的文件所在的文件夾'},\
s: EditText { text:'', preferredSize: [180, 20] },\
},\
other:Group{ orientation: 'row', \
c: Checkbox { preferredSize: [16, 16]} ,\
s: StaticText {text:'啟用另存 (jpg格式)'},\
}, \
otherSet: Panel {orientation: 'column',alignChildren:'left',\
text: '另存設(shè)置', \
Quality: Group { orientation: 'row', \
s: StaticText { text:'Jpeg壓縮質(zhì)量:' }, \
e: EditText { preferredSize: [30, 20] ,text:'7'} ,\
s: StaticText { text:'(0-12,數(shù)值越大質(zhì)量越高)' }, \
}, \
head: Group { orientation: 'row', \
s: StaticText { text:'在文件名前添加字符:' }, \
e: EditText { preferredSize: [50, 20] } ,\
}, \
foot: Group { orientation: 'row', \
s: StaticText { text:'在文件名后添加字符:' }, \
e: EditText { preferredSize: [50, 20] }, \
} ,\
otherF:Group{ orientation: 'row', \
c: Checkbox { preferredSize: [16, 16]} ,\
s: StaticText {text:'另存至其他文件夾'},\
}, \
folderS:Group{ orientation: 'row', \
b: Button {text:'另存至', properties:{name:'save'} ,helpTip:'選擇您處理好的文件要保存至的文件夾'},\
s: EditText { text:'', preferredSize: [180, 20] },\
},\
},\
},\
buttons: Group { orientation: 'row', alignment: 'right',\
Btnok: Button { text:'確定', properties:{name:'ok'} }, \
Btncancel: Button { text:'取消', properties:{name:'cancel'} } \
}, \
}";
win = new Window (res);
win.buttons.Btncancel.onClick = function () {
this.parent.parent.close();
}
function lock_b(){ //如果勾選了a,則b被鎖定
if(win.group.a.c.value){
win.group.b.c.value=true;
}
}
win.group.a.c.onClick =function() { lock_b()};
win.group.b.c.onClick =function() { lock_b()};
// 打開(kāi)文件夾的操作
var folderOpen=win.group.folderO
var folderSave=win.group.otherSet.folderS
folderOpen.b.onClick = function() {
var defaultFolder = folderOpen.s.text;
var testFolder = new Folder(defaultFolder);
if (!testFolder.exists) {
defaultFolder = "~";
}
var selFolder = Folder.selectDialog("選擇待處理文件夾", defaultFolder);
if ( selFolder != null ) {
folderOpen.s.text = selFolder.fsName;
folderOpen.s.helpTip = selFolder.fsName.toString();
}
}
folderSave.b.onClick = function() {
var defaultFolder = folderSave.s.text;
var testFolder = new Folder(defaultFolder);
if (!testFolder.exists) {
defaultFolder = "~";
}
var selFolder = Folder.selectDialog("選擇要儲(chǔ)存至的文件夾", defaultFolder);
if ( selFolder != null ) {
folderSave.s.text = selFolder.fsName;
folderSave.s.helpTip = selFolder.fsName.toString();
}
}
// 初始化選項(xiàng)
win.group.folderO.enabled =false;
win.group.otherSet.enabled =false;
//操作文件夾開(kāi)關(guān)
win.group.now.c.onClick =function(){
if (win.group.folderO.enabled) {
win.group.folderO.enabled =false;
}else{
win.group.folderO.enabled =true;
}
}
//另存開(kāi)關(guān)
win.group.other.c.onClick =function(){
if (win.group.otherSet.enabled) {
win.group.otherSet.enabled =false;
}else{
win.group.otherSet.enabled =true;
if (!win.group.otherSet.otherF.c.value) {win.group.otherSet.folderS.enabled =false}
}
}
//另存至文件夾開(kāi)關(guān)
win.group.otherSet.otherF.c.onClick =function(){
if (win.group.otherSet.folderS.enabled) {
win.group.otherSet.folderS.enabled =false;
}else{
win.group.otherSet.folderS.enabled =true;
}
}
// 實(shí)際處理開(kāi)始
function newsize(docRef,a,b,PW,PH){ //改變圖象尺寸函數(shù)
var dw = docRef.width;
var dh = docRef.height;
var fw = PW;
var fh = PH;
if(!b && dh>dw){
fw = PH;
fh = PW;
}
if(a){
w1 =dw/fw;
h1 =dh/fh;
if(w1>h1){
fh =dh/w1;
}else{
fw =dw/h1;
}
}
docRef.resizeImage(fw, fh, PRESOLUTION, ResampleMethod.BICUBIC);
}
function save(docRef) { //儲(chǔ)存函數(shù)
if (win.group.other.c.value){ //判斷是否另存
docRef.flatten() ;//合并圖層,以儲(chǔ)存jpg
docRef.changeMode(ChangeMode.RGB); // 更改為rgb模式,避免其它模式無(wú)法儲(chǔ)存
var jpegOptions = new JPEGSaveOptions();
var setquality = Number(win.group.otherSet.Quality.e.text);
if (setquality>12) {
setquality=12;
}else if (setquality<0) {
setquality=0;
}
jpegOptions.quality = setquality;
// 獲取另存文件夾及前后追加字段
var headWord = win.group.otherSet.head.e.text;
var footWord = win.group.otherSet.foot.e.text;
if (win.group.otherSet.otherF.c.value){ //如果選中另存至文件夾
if (win.group.otherSet.folderS.s.text){
var saveFolder = win.group.otherSet.folderS.s.text+"/";
}else{
var saveFolder = docRef.path+"/newsize_"; //容錯(cuò),避免沒(méi)有具體選擇另存到那個(gè)文件夾
}
}else{
if (headWord || footWord){
var saveFolder = docRef.path+"/";
}else{
var saveFolder = docRef.path+"/newsize_"; //容錯(cuò),避免沒(méi)有添加前后綴而保存在本文件夾
}
}
docRef.saveAs(new File(saveFolder + headWord +docRef.name.substring(0,docRef.name.lastIndexOf('.')) + footWord + ".jpg"),jpegOptions); //設(shè)定輸出文件名稱
}else{
docRef.save();
}
docRef.close(SaveOptions.DONOTSAVECHANGES); //關(guān)閉當(dāng)前文檔
}
win.buttons.Btnok.onClick = function () {
var x=Number(win.group.corrdination.x.e.text);
var y=Number(win.group.corrdination.y.e.text);
var a=win.group.a.c.value;
var b=win.group.b.c.value; //選中則不顛倒橫豎,以輸入值為準(zhǔn)
if (!b && x<y){ //確保PW>=PH
var PW=y
var PH=x
}else{
var PW=x
var PH=y
}
if (!win.group.now.c.value) { // 當(dāng)前活動(dòng)文檔為操作對(duì)象
while (app.documents.length){
var docRef = app.activeDocument;
newsize(docRef,a,b,PW,PH);
save(docRef);
}
}else{ // 文件夾為操作對(duì)象
var openFolder = Folder(win.group.folderO.s.text);
var fileList = openFolder.getFiles() //獲取open文件夾下所有文件
for (i=0;i<fileList.length;i++){
if (fileList[i] instanceof File && fileList[i].hidden == false){ //不處理隱藏文件
open(fileList[i]);
var docRef = app.activeDocument;
newsize(docRef,a,b,PW,PH);
save(docRef);
}
}
}
this.parent.parent.close();
}
win.center();
win.show();
相關(guān)文章
PS不能完成命令,因?yàn)闆](méi)有足夠內(nèi)存(RAM)的解決方案
photoshop無(wú)疑是一款非常好用的圖像編輯軟件,對(duì)于電腦小白來(lái)說(shuō)操作非常困難,比如提示“不能完成命令,因?yàn)闆](méi)有足夠內(nèi)存(RAM)”要怎么辦呢?下面就來(lái)看看小編為大家提供2025-05-16
縱享絲滑的修圖體驗(yàn)! 10個(gè)Photoshop性能優(yōu)化小技巧
ps提供了豐富的自定義選項(xiàng),只要根據(jù)你的硬件配置和項(xiàng)目需求,合理調(diào)整內(nèi)存、緩存等核心參數(shù),只要幾個(gè)小步驟,小白用戶也能讓運(yùn)行效率加倍2025-04-24
psd文件用什么打開(kāi)? 沒(méi)有Photoshop的情況下打開(kāi)psd文件的四種方法
收到了psd文件,但是電腦沒(méi)有安裝ps,該怎么解決這個(gè)問(wèn)題呢?下面我們就來(lái)看看這個(gè)問(wèn)題的解決辦法2025-05-07
ps一直閃退是什么原因? Photoshop閃退原因及解決方案
在使用過(guò)程中,Photoshop總是會(huì)無(wú)緣無(wú)故地自動(dòng)退出,這不僅打斷了工作流程,還可能導(dǎo)致未保存的更改丟失,令人頭疼不已,本文將深入剖析Photoshop自動(dòng)退出的原因,并提供相2024-07-04
怎么優(yōu)化PSD文件? 有效防止Photoshop崩潰卡死的技巧奧
明就幾個(gè)圖層,并沒(méi)有引入什么大型圖片,但是 PSD 文件卻異常巨大,而且用起來(lái)經(jīng)??D?下面我們就來(lái)看看pds文件優(yōu)化方法2024-05-25
將多個(gè)圖層合并為一個(gè)圖層,但作為設(shè)計(jì)師你需要了解一下合并圖層是有破壞性的,下面我們就來(lái)詳細(xì)介紹一下2024-05-25
ps暫存盤(pán)已滿怎么回事? 暫存盤(pán)已滿快速釋放空間的六種方法
通常是因?yàn)镻hotoshop使用的暫存盤(pán)空間不足,導(dǎo)致無(wú)法正常工作,那么,如何解決這一問(wèn)題呢?本文將為您提供詳細(xì)的解決方案2024-05-25
PS存儲(chǔ)和存儲(chǔ)為有什么區(qū)別? 理解存儲(chǔ)與存儲(chǔ)為的重要性
ps導(dǎo)出文件的時(shí)候,可以直接存儲(chǔ),也可以另存存儲(chǔ)為,這兩個(gè)操作有區(qū)別嗎?新手該怎么保存文件呢?詳細(xì)請(qǐng)看下文介紹2024-03-28
ps beta ai顯示高峰需求進(jìn)不去怎么辦? psai高峰期需求用不了解決辦法
PSBetaAI2023加入了AI的功能,在使用過(guò)程中,有時(shí)會(huì)遇到一個(gè)令人煩惱的問(wèn)題,那就是PhotoshopBetaAI提示我們正在面臨高峰需求,請(qǐng)稍候再試,針對(duì)這個(gè)問(wèn)題,本文為大家整理2024-03-28
ps段落兩端對(duì)齊不能用怎么辦? ps文字排版不能對(duì)齊的修復(fù)技巧
PS進(jìn)行設(shè)計(jì)時(shí),段落兩端對(duì)齊是一個(gè)常用的排版功能,它能讓文本看起來(lái)更加整潔和專業(yè),然而,許多用戶在使用PS時(shí)可能會(huì)遇到一個(gè)令人頭疼的問(wèn)題:段落兩端對(duì)齊功能似乎不起作2024-03-09







