- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用 Javascript 为 photoshop 编写了一个脚本,它获取用户输入(桌面上的框数)然后将其转换为像素大小。问题在于调整大小,图层不会更改为该数量,而是按该数量更改。例如。 microsoftbox 从 800*800 开始,然后应更改为 500*500,但将其添加到等于 1300*1300。
app.preferences.rulerUnits = Units.PIXELS;
//Get all input
var microsoftboxes = prompt("How many boxes for microsoft?");
var gamesboxesx = prompt("How many across boxes for games?");
var gamesboxesy = prompt("How many down boxes for games?");
var adobeboxes = prompt("How many boxes for adobe?");
var filesboxes = prompt("How many boxes for files?");
var toolsboxes = prompt("How many boxes for tools?");
var recycleboxes = 1;
//Add percentage on and convert to pixel num
var mb = microsoftboxes * 75;
mb = mb + (mb * 0.04);
var gbx = gamesboxesx * 75;
gbx = gbx + (gbx * 0.04);
var gby = gamesboxesy * 75;
gby = gby + (gby * 0.04);
var ab = adobeboxes * 75;
ab = ab + (ab * 0.04);
var fb = filesboxes * 75;
fb = fb + (fb * 0.04);
var tb = toolsboxes * 75;
tb = tb + (tb * 0.04);
var rb = recycleboxes * 75;
rb = rb + (rb * 0.04);
//vars for change size
var doc = app.activeDocument;
var m = doc.layers.getByName('microsoft');
var g = doc.layers.getByName('games');
var a = doc.layers.getByName('adobe');
var t = doc.layers.getByName('tools');
var f = doc.layers.getByName('files');
var r = doc.layers.getByName('recycle');
m.resize(mb, 73, AnchorPosition.MIDDLELEFT);
g.resize(gbx, gby, AnchorPosition.TOPCENTER);
a.resize(ab, 73, AnchorPosition.MIDDLELEFT);
f.resize(fb, 73, AnchorPosition.MIDDLELEFT);
t.resize(tb, 73, AnchorPosition.MIDDLELEFT);
r.resize(rb, 73, AnchorPosition.MIDDLELEFT);
---更新---我已经设法弄清楚,尽管它被设置为像素,但按百分比变化。例如。文件应该设置为 78 但它设置为
250 (the current value) * 0.78(78 as a percentage) = 195
文件被设置为 195 像素。有什么办法可以解决这个问题吗?
现在的代码是:
var startru = app.preferences.rulerUnits;
var starttu = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
//Get all input
var microsoftboxes = prompt("How many boxes for microsoft?");
var gamesboxesx = prompt("How many across boxes for games?");
var gamesboxesy = prompt("How many down boxes for games?");
var adobeboxes = prompt("How many boxes for adobe?");
var filesboxes = prompt("How many boxes for files?");
var toolsboxes = prompt("How many boxes for tools?");
var recycleboxes = 1;
//Add percentage on and convert to pixel num
var mb = microsoftboxes * 75;
mb = mb + (mb * 0.04);
var gbx = gamesboxesx * 75;
gbx = gbx + (gbx * 0.04);
var gby = gamesboxesy * 75;
gby = gby + (gby * 0.04);
var ab = adobeboxes * 75;
ab = ab + (ab * 0.04);
var fb = filesboxes * 75;
fb = fb + (fb * 0.04);
var tb = toolsboxes * 75;
tb = tb + (tb * 0.04);
var rb = recycleboxes * 75;
rb = rb + (rb * 0.04);
//vars for change size
var doc = app.activeDocument;
var m = doc.layers.getByName('microsoft');
var g = doc.layers.getByName('games');
var a = doc.layers.getByName('adobe');
var t = doc.layers.getByName('tools');
var f = doc.layers.getByName('files');
var r = doc.layers.getByName('recycle');
m.resize(mb, 85, AnchorPosition.MIDDLELEFT);
g.resize(gbx, gby, AnchorPosition.TOPCENTER);
a.resize(ab, 85, AnchorPosition.MIDDLELEFT);
f.resize(fb, 85, AnchorPosition.MIDDLELEFT);
t.resize(tb, 85, AnchorPosition.MIDDLELEFT);
r.resize(rb, 85, AnchorPosition.MIDDLELEFT);
app.preferences.rulerUnits = startru;
app.preferences.typeUnits = starttu;
最佳答案
正如我在评论中提到的,ArtLayer 对象的调整大小方法明确要求百分比值,并且不能接受用于调整大小的像素值。我确信有一个公式可以使用当前层的大小来确定达到新的特定大小所需的百分比,但我认为阻力最小的路径是
下面是我为实现这一目的而编写的示例。它不是针对您的问题的复制/粘贴解决方案,而是使用您想要做什么的想法进行说明。我认为修改此代码以满足您的确切需求应该相当容易。
app.preferences.rulerUnits = Units.PIXELS;
var activeDoc = app.activeDocument;
//store the active document's resolution for when we create the temp doc
var res = activeDoc.resolution;
//capture the existing color mode for the temp doc
var newDocMode;
switch(activeDoc.mode) {
case DocumentMode.RGB:
newDocMode = NewDocumentMode.RGB;
break;
case DocumentMode.CMYK:
newDocMode = NewDocumentMode.CMYK;
break;
}
//my preference to store sizes as a JSON object
var msboxSizes = {
sm: {
width: 200,
height: 200
},
md: {
width: 500,
height: 500
},
lg: {
width: 800,
height: 800
}
};
//target our layer
var msboxLayer = activeDoc.artLayers.getByName("microsoftbox");
//make it the active layer
activeDoc.activeLayer = msboxLayer;
//get the bounds of the layer so we can create a new doc the same size as the image on this layer
var msboxSize = activeDoc.activeLayer.bounds;
//use the bounds to determine the width and height of the layer
var msboxWidth = (msboxSize[2].value - msboxSize[0].value).toFixed(0);
var msboxHeight = (msboxSize[3].value - msboxSize[1].value).toFixed(0);
//convert those values back into pixels
msboxWidth = new UnitValue(msboxWidth, "px");
msboxHeight = new UnitValue(msboxHeight, "px");
//copy our layer to the clipboard
msboxLayer.copy();
//create a new doc that is the same size, resolution and color mode as the layer we want to resize
var tempDoc = app.documents.add(msboxWidth, msboxHeight, res, "Temp Doc", newDocMode, DocumentFill.TRANSPARENT);
//set the temp doc as the active document
app.activeDocument = tempDoc;
//paste the layer into the temp doc
tempDoc.paste();
//store the different size obj keys in an array (could use array of objects and skip this bit)
var resizes = ["lg","md","sm"]
//loop through resizing to each size in the array, copy and paste them as layers into the original document
for (i = 0; i < resizes.length; i++) {
var newWidth = msboxSizes[resizes[i]].width;
var newHeight = msboxSizes[resizes[i]].height;
app.activeDocument = tempDoc;
tempDoc.resizeImage(newWidth, newHeight, res, ResampleMethod.BICUBIC);
tempDoc.activeLayer.copy();
app.activeDocument = activeDoc;
activeDoc.paste();
}
//close the temp doc and dont save it
tempDoc.close(SaveOptions.DONOTSAVECHANGES);
关于javascript - Photoshop 脚本 - 未正确调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48248299/
这个问题已经有答案了: How to do case insensitive string comparison? (23 个回答) 已关闭 3 年前。 用户在我的输入栏中写入“足球”,然后执行第 6
啊,不习惯 javascript 中的字符串。 character_id= + id + correct= + correctOrIncorrect 这就是我需要制作成字符串的内容。如果您无法猜测字符
$(function() { var base_price = 0; CalculatePrice(); $(".math1").on('change', function(e) { Calc
我找不到任何文章回答问题:将Spinnaker部署到Spinnaker将管理的同一Kubernetes集群是否安全/正确?我主要是指生产,HA部署。 最佳答案 我认为Spinnaker和Kuberne
我正在使用MSVC在Windows上从源代码(官方源代码发布,而不是从仓库中)构建Qt5(Qt 5.15.0)。 我正在设置环境。变量,依赖项等,然后运行具有1600万个选项的configure,最后
我需要打印一个包含重复单词的数组。我的数组已经可以工作,但我不知道如何正确计算单词数。我已经知道,当我的索引计数器 (i) 为 49 时,并且当 (i) 想要计数到 50 时,我会收到错误,但我不知道
我正在遵循一个指南,该指南允许 Google map 屏幕根据屏幕尺寸禁用滚动。我唯一挣扎的部分是编写一个代码,当我手动调整屏幕大小时动态更改 True/False 值。 这是我按照说明操作的网站,但
我有一个类“FileButton”。它的目的是将文件链接到 JButton,FileButton 继承自 JButton。子类继承自此以使用链接到按钮的文件做有用的事情。 JingleCardButt
我的 friend 数组只返回一个数字而不是所有数字。 ($myfriends = 3) 应该是…… ($myfriends = 3 5 7 8 9 12). 如果我让它进入 while 循环……整个
这个问题在这里已经有了答案: Is there a workaround to make CSS classes with names that start with numbers valid?
我正在制作一个 JavaScript 函数,当调整窗口大小时,它会自动将 div 的大小调整为与窗口相同的宽度/高度。 该功能非常基本,但我注意到在调整窗口大小时出现明显的“绘制”滞后。在 JS fi
此问题的基本视觉效果可在 http://sevenx.de/demo/bootstrap-carousel/inc.carousel/tabbed-slider.html 获得。 - 如果你想看一看。
我明白,如果我想从函数返回一个字符串文字或一个数组,我应该将其声明为静态的,这样当被调用的函数被返回时,内容就不会“消亡”。 但我的问题是,当我在函数内部使用 malloc 分配内存时会怎样? 在下面
在 mySQL 数据库中存储 true/false/1/0 值最合适(读取数据消耗最少)的数据字段是什么? 我以前使用过一个字符长的 tinyint,但我不确定它是否是最佳解决方案? 谢谢! 最佳答案
我想一次读取并处理CSV文件第一行中的条目(例如打印)。我假设使用Unix风格的\n换行符,没有条目长度超过255个字符,并且(现在)在EOF之前有一个换行符。这意味着它是fgets()后跟strto
所以,我们都知道 -1 > 2u == true 的 C/C++ 有符号/无符号比较规则,并且我有一种情况,我想有效地实现“正确”比较。 我的问题是,考虑到人们熟悉的尽可能多的架构,哪种方法更有效。显
**摘要:**文章的标题看似自相矛盾。 本文分享自华为云社区《Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序》,作者: Jerry Wang 。 文章的标题看似自相矛盾,然而我在“正
我有一个数据框,看起来像: dataDemo % mutate_each(funs(ifelse(. == '.', REF, as.character(.))), -POS) # POS REF
有人可以帮助我使用 VBScript 重新格式化/正确格式化带分隔符的文本文件吗? 我有一个文本文件 ^分界如下: AGREE^NAME^ADD1^ADD2^ADD3^ADD4^PCODE^BAL^A
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是一名优秀的程序员,十分优秀!