• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PS脚本篇--1.代码是什么意思,写代码干嘛

武飞扬头像
张风捷特烈
帮助44

环境
脚本语言: JavaScript
IDE环境:Idea (随意,记事本也可以)
PS版本:18.0.0

一、脚本的使用

1.HelloWolrd 走起
---->[Hello.js]-----------------
Alert("Hello World");

2.自定义快捷键

二、从面向对象的角度来看PhotoShop

0.对象:app
app {//整个PS软件对象
    name,//软件名称
    version,//软件版本
    documents:{},//打开的文件的信息
    fonts:{}//系统字体
    recentFiles:{},//所有的打开文档对象(数组)
    activeDocument:{}//当前激活的文档对象
}

1.获取名称和版本号 操作提示音:app.beep()
---->[info.js]-----------------
var msg = app.name   "\r\n 版本:"   app.version;
alert(msg);
app.beep() //执行播放提示音效果:叮咚

2.打开的文件的信息:app.documents
var docs = app.documents;
var msg = "";

for (var i = 0; i < docs.length; i  ) {
    msg  =
        "名称:"   docs[i].name   "\r\n"  
        "宽/像素:"   docs[i].width   "\r\n"  
        "高/像素:"   docs[i].height   "\r\n";
}
alert(msg);

3.列出字体:app.fonts
var fonts = app.fonts;
var msg = "";

for (var i = 0; i < fonts.length; i  ) {
    msg  = "序号:"   (i   1)   "  字体:"   fonts[i].name   "\r\n";
}
alert(msg);

4.最近打开的文件:app.recentFiles
var cFiles = app.recentFiles;
var msg = "";
for (var i = 0; i < cFiles.length; i  ) {
    msg  = (i   1)   ":"   cFiles[i].name   "\r\n";
}
alert(msg);

5.当前激活的文档对象:app.activeDocument
var doc = app.activeDocument;
msg = "名称:"   doc.name   "\r\n"  
    "宽/像素:"   doc.width   "\r\n"  
    "高/像素:"   doc.height   "\r\n";
alert(msg);

三、文件操作相关

1.打开图片:"open(File)"
var img = File("J:\\Java\\Android\\TolyGithub\\TolyTest\\toly_test\\src\\main\\res\\mipmap-xxhdpi\\bg_10.jpg");
var ok = confirm("打开图片?");
if (ok) {
    open(img)
}

2.打开文件夹下所有图片
var imgFolder = File("J:\\Java\\Android\\TolyGithub\\TolyTest\\toly_test\\src\\main\\res\\mipmap-xxhdpi");
var files = imgFolder.getFiles();
for (var i = 0; i <files.length; i  ) {
    var file = files[i];
    if (file instanceof File) {
        open(file);
    }
}

3.拷贝当前文档并打开
var doc = app.activeDocument;//当前文件对象
doc.duplicate(app.activeDocument.name   "-copy", 1);//拷贝当前文档并打开

4.文件另存为:app.activeDocument.saveAs
var doc = app.activeDocument;//当前文件对象
var outPath = new File("G:\\Photo\\龙少.png");
var options = PNGSaveOptions;//保存png模式
var asCopy = true;//副本方式保存
var extensionType = Extension.LOWERCASE;//拓展名小写
doc.saveAs(outPath, options, asCopy, extensionType);
alert("保存完成")

5.压缩并保存图片(web)

直接保存的png 有11.1M, web导出的0.3k,虽然效果上有些失色,还是很有价值的。

//压缩保存gif
var doc = app.activeDocument;//当前文件对象
var path = new File("G:\\Photo\\龙少.gif");
var eop = new ExportOptionsSaveForWeb();//web图片导出配置
eop.transparecy = false;//是否正常透明度
eop.includeProfile = true;//是否包含内置颜色配置文件
eop.lossy = 0;//有损压缩程度
eop.colors = 256;//色彩量
eop.colorReduction = ColorReductionType.SELECTIVE;////减低颜色深度算法:可选择
eop.formate = SaveDocumentType.COMPUSERVEGIF;//导出格式FIF
eop.ditherAmount = 0;//像素抖动值
eop.dither = Dither.NOISE;//杂色
eop.palette = Palette.LOCALADAPTIVE;//局部(随样性)
doc.exportDocument(path, ExportType.SAVEFORWEB, eop);
alert("保存完成:"   path);

//压缩保存jpeg
var doc = app.activeDocument;//当前文件对象
var filePath = new File("G:\\Photo\\龙少.jpeg");
var eop = new ExportOptionsSaveForWeb();//web图片导出配置
eop.quality = 60;//图片质量
doc.exportDocument(filePath, ExportType.SAVEFORWEB, eop);
alert("保存完成:"   filePath);

//压缩保存png
var doc = app.activeDocument;//当前文件对象
var filePath = new File("G:\\Photo\\龙少-compressed.png");
var eop = new ExportOptionsSaveForWeb();//web图片导出配置
eop.PNG8 = true;//png 8彩
doc.exportDocument(filePath, ExportType.SAVEFORWEB, eop);
alert("保存完成:"   filePath);

四、一些简单操作

1.创建新文件
//创建新文件
var width = 1080;//宽
var height = 1920;//高
var resolution=72;//分辨率
var fileName="phone";//名称
var mode = NewDocumentMode.RGB;//色彩模式
var fillColor = DocumentFill.TRANSPARENT;//背景填充颜色
var pixelAspectRatio=1;//像素比率
app.documents.add(width, height, resolution, fileName, mode, fillColor, pixelAspectRatio);

2.添加文字图层
//创建文字图层
var doc = app.documents.add(500, 200);
var artLayer = doc.artLayers.add();
artLayer.kind = LayerKind.TEXT;

var textItem = artLayer.textItem;//文字条目
textItem.contents = "张风捷特烈";//文字内容
textItem.size = 40;
artLayer.translate(0, 100);

3.获取当前文件的所有图层
//获取图层对象
var layers = app.activeDocument.artLayers;
var msg = "";
for (var i = 0; i < layers.length; i  ) {
    var layer = layers[i];
    msg  = i   "--图层名称:"   layer.name   "\r\n";
}
alert(msg);

4.获取图层尺寸
var layer = app.activeDocument.activeLayer;//活动图层
alert(layer.bounds);

5.当前激活图层:色彩平衡
var layer = app.activeDocument.activeLayer;//活动图层
layer.adjustColorBalance([-39,-81,0], [-44,50,-52], [0,0,0], true);//阴影、中间调、高光

6.前景色和背景色的修改
var ok = confirm("是否随机设置前景色和背景色?");
if (ok) {
    //前景色
    app.foregroundColor.rgb.red = Math.random() * 255;
    app.foregroundColor.rgb.green = Math.random() * 255;
    app.foregroundColor.rgb.blue = Math.random() * 255;
    //背景色
    app.backgroundColor.rgb.red = Math.random() * 255;
    app.backgroundColor.rgb.green = Math.random() * 255;
    app.backgroundColor.rgb.blue = Math.random() * 255;
}

开始散扯-----------------------闲人请进--------------------------------

1.代码是什么?

不知道有没有人真正认真考虑过这个问题,还是跟我一样,上来就是用Java跟着敲HelloWorld
然后输出了HelloWorld,老师得意的说:看到没,这就是你们的第一行代码。之后就一路api...

这个问题对于程序员来说就像在问什么是呼吸一样,那呼吸是什么?
|-- 呼吸,是指机体与外界环境之间气体交换的过程

代码是什么?
|-- 代码就是程序员用开发工具所支持的语言写出来的源文件,
|-- 是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系

代码是两个字,当然也是翻译出来的(code),我觉得这翻译的恰到好处
代: 替代物,也就是说此物并非真身
码:这个字在中国是一个计量的工具,是一个代表数目的符号

整个过程就像一个中国人在德国餐厅,说一句中文:"请给我一杯水",
然后经过空气粒子翻译后,改变空气分子震动方式,传到德国人的耳中:"Geben Sie mir ein Glas Wasser."
然后德国人给你一杯水喝一样。中国人并不需要会德文,他也能发出指令让对方执行。

代码就是:"请给我一杯水",代替的是:"Geben Sie mir ein Glas Wasser."
"空气翻译粒子"就是生产代码所在的语言环境,我们俗称:"IDE"

[1].代码不是给计算机看的,代码是给人看的
[2].计算机/虚拟机可以识别并运行代码编译后的二进制文件
[3].程序的执行功能需要正确的编译

2.为什么要写代码
这个问题对于程序员来说就像在问人为什么要呼吸一样,毫无意义?那人为什么要呼吸呢?
|-- A : 不呼吸就憋死了呗
|-- B : 呼吸作用可以使内糖类、脂类和蛋白质等有机物的氧化分解,产生ATP,提供生命活动需要的能量
|-- C : 呼吸作用:
        第一阶段 C6H12O6(葡萄糖)=4[[H]{(还原氢) 2C3H403(丙酮酸) 2ATP
        第二阶段 2C3H4O3(丙酮酸) 6H2O(水)===20[H](还原氢) 6CO2(二氧化碳) 2ATP
        第三阶段 24[H](还原氢) 6O2(氧气)=12H2O(水) 大量能量34ATP
        总反应式 C6H12O6 6H2O 6O2 --酶-→ 6CO2 12H2O 大量能量(38ATP)

代码是什么?
|-- A : 不写代码就饿死了
|-- B : 写代码可以使脑中的想法、架构、功能等思维现实化成产品,产生金钱,提供生命活动需要的物质
|-- C : 写代码:
        第一阶段:衣带渐宽终不悔,为伊消得人憔悴 = 千百虐   如初恋
        第二阶段:独上高楼,望断天涯路
        第二阶段:蓦然回首,那人却在灯火阑珊处 ---> 登顶封神
        
代码是一种手段,能让计算机执行人的意志。
其实不写代码也可以,有能力你可以直接敲0101,就像那个中国人直接说:"Geben Sie mir ein Glas Wasser."  

为了更好的让计算机执行人的意志,我们从问题的解决方案由:
一条条的指令的执行来完成任务(面向过程)
到将问题抽象成类,让对象之间相互作用来完成任务(面向对象)

这就相当于出现了板砖,然后就能搭架构,建房子,房子又有各自的风格
还要内部的运行机制合理,然后大型的程序不但可以平稳的运行,还能拓展新功能  

像PhotoShop这样的大型软件,提供了一个GUI的操作界面,也就是 代码---> 无码  
设计师不需要会敲代码,也可以使用,而且他们的美学和设计专业的知识更与PhotoShop相配:

代码 --> 编译器 --> 二进制文件   -->计算机    依靠编译器产生二进制文件,计算机可执行它本不认识的代码 
代码 --> 计算机 --> 图形界面     --> 设计师   依靠计算机产生图形界面,设计师可执行它本不认识的代码
代码 --> 计算机 --> PhotoShop对象--> 脚本     依靠计算机产生PhotoShop对象,脚本可执行它本不认识的代码
PS 拥有很完善的GUI界面,我并不认为在设计方面脚本能比设计师厉害
脚本暂时感觉还挺鸡肋,能用界面解决的为什么非要写代码?
代码的优势在于高效,不怕累,精确,缜密,低费,抓住这几点,脚本应该还是有用武之地的

总的来说,我们有待处理的问题,称为IN数据, 经过处理完成后结果称为OUT数据
代码最终目的是解决问题(转化数据),最终绝大多数落实到人的感官,即OUT数据被消费,从而产生价值

古时候画师将一个丑女(IN数据)画成美女(OUT数据),客户看了很满意,完成工作
现在PS将一个丑女(IN数据)变成美女(OUT数据),客户看了很满意,完成工作。
两者之间本质区别在于:解决问题的方式即对数据的处理方式Handle存在差异。
代码高效,实用,易用,精确,缜密,低费决定了它的竞争力无与伦比。但同时它的晦涩使群众望尘莫及

为什么要写代码?
--- 不写代码你想干哈? 想飞上天啊? 想和太阳肩并肩啊?能得了你还....
废话一堆,得看且看,下一篇正式来详细介绍相关API,敬请期待(或许没了也说不定)...

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanggebfc
系列文章
更多 icon
同类精品
更多 icon
继续加载