- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 JavaScript 还是个新手。但不知何故设法创建了以下脚本。通常我运行这个脚本,批处理 400-500 张图像。它在 2 个不同的位置创建并保存图像的 2 个副本,同时进行一些特定的图像压缩。
//Script should be used only in Adobe Photoshop
//This script will: 1. Check if canvas is 1:1, if not then scale to the correct ratio (3000px x 3000px)
// 2. Check whether it has ColorProfile embedded. If not then change collor profile to sRGB.
// 3. Save the resized TIFF version (100% Quality, 3000px x 3000px, sRGB, LZW compressed, Without layers) into "/Volumes/Hams Hall Workspace/Ecom_Staging/Images_Today"
// 4. Save another copy as JPEG (80% Quality, 2000px x 2000px, sRGB) "into /Volumes/Hams Hall Workspace/Ecom_Staging/Jpegs_for_Hybris"
if( BridgeTalk.appName == "photoshop" ) {
//continue executing script
}
// create the output file
// first figure out which kind of line feeds we need
if ($.os.search(/windows/i) != -1) {
fileLineFeed = "Windows"
}
else {
fileLineFeed = "Macintosh"
}
//output location
folderHybrisUpload = "/Jpegs_for_Hybris";
folderTiffSave = "/Images_Today";
folderDumpRoot = "/Volumes/Hams Hall Workspace/Ecom_Staging";
folderName = "~/Desktop/"
// Sizes
var hybrisSize=2000;
var hybrisQuality=80;
var docRef = activeDocument;
//History States
app.purge(PurgeTarget.HISTORYCACHES);
var history = docRef.historyStates.length - 1;
//Units Pixels
app.preferences.rulerUnits = Units.PIXELS;
//Make it 1:1 Ratio (Square)
if (docRef.height != docRef.width) {
docRef.changeMode(ChangeMode.RGB);
// these are our values for the END RESULT width and height (in pixels) of our image
var fWidth = 3000;
var fHeight = 3000;
// do the resizing. if height > width (portrait-mode) resize based on height. otherwise, resize based on width
if (docRef.height > docRef.width) {
docRef.resizeImage(null, UnitValue(fHeight, "px"), null, ResampleMethod.BICUBIC);
} else {
docRef.resizeImage(UnitValue(fWidth, "px"), null, null, ResampleMethod.BICUBIC);
}
// Makes background white
var white = new SolidColor();
white.rgb.hexValue = "FFFFFF";
app.backgroundColor = white;
// Resize Canvas
app.activeDocument.resizeCanvas(UnitValue(fWidth, "px"), UnitValue(fHeight, "px"));
var history = docRef.historyStates.length - 1;
}
//Correct .jpeg extension when saving for Hybris
var fileNameNoExtension = docRef.name;
fileNameNoExtension = fileNameNoExtension.split(".");
var fileExtension= fileNameNoExtension[1];
if (fileNameNoExtension.length > 1) {
fileNameNoExtension.length--;
}
fileNameNoExtension = fileNameNoExtension.join(".");
fileNameType = fileNameNoExtension.split("_");
var finalUnderScorePosition = fileNameNoExtension.lastIndexOf("_");
varFileName = "";
for (var a = 0; a < finalUnderScorePosition; a++) {
varFileName += fileNameNoExtension.charAt(a)
}
varFileType = "";
for (var a = finalUnderScorePosition + 1; a < fileNameNoExtension.length; a++) {
varFileType += fileNameNoExtension.charAt(a)
}
//Save File into Hybris Folder
app.activeDocument.resizeImage(hybrisSize, undefined, undefined, ResampleMethod.BICUBICSHARPER);
saveFile = File(folderDumpRoot + folderHybrisUpload + "/" + varFileName + "_"+varFileType+".jpg")
SaveJPEG(hybrisQuality,saveFile);
docRef.activeHistoryState = docRef.historyStates[history];
//Save copy of an "Original" into Tiff Folder (Images_Today)
app.activeDocument.save();
var saveTIFF = new TiffSaveOptions();
saveTIFF.layers = false;
saveTIFF.imageCompression = TIFFEncoding.TIFFLZW;
app.activeDocument.saveAs(new File(folderDumpRoot + folderTiffSave + "/" + docRef.name), saveTIFF);
//JPEG Compression Settings
function SaveJPEG(quality,saveFile) {
var exportOptionsSaveForWeb = new ExportOptionsSaveForWeb();
exportOptionsSaveForWeb.format = SaveDocumentType.JPEG;
exportOptionsSaveForWeb.includeProfile = false;
exportOptionsSaveForWeb.interlaced = true;
exportOptionsSaveForWeb.optimized = true;
exportOptionsSaveForWeb.includeProfile = false;
exportOptionsSaveForWeb.quality = quality;
activeDocument.exportDocument(saveFile, ExportType.SAVEFORWEB, exportOptionsSaveForWeb);
}
// Create the log file
var fileOut = new File(folderName+"time_test.txt");
// Use OS specific linefeeds
fileOut.lineFeed = fileLineFeed;
// open the file for writing
fileOut.open("w", "TEXT", "????");
// Write a line to .log file
// use commas as delimiters if you want to open the file in Excel
// use "/r" to add carriage returns
fileOut.writeln("SKU, Date");
// Write another line to .log file
// var TodaysDate = new Date();
fileOut.write(varFileName + "_"+varFileType+".jpg\r");
// stop writing to the file
fileOut.close();
// Open the file in it's associated application
// .log files are associated with the "Console" on OS X
fileOut.execute();
//Close
app.activeDocument.close();
我希望它接下来能够做的是记录任何已成功保存在“/Volumes/Hams Hall Workspace/Ecom_Staging/Jpegs_for_Hybris”中的图像名称出现在一行中并保存在 .csv 文件中桌面。
我设法创建了 .csv 日志文件,它将图像名称(“SKU”)记录到桌面上的 .csv 文件中。
// Create the log file
var fileOut = new File(folderName+"time_test.txt");
// open the file for writing
fileOut.open("w", "TEXT", "????");
// Write a line to .log file
// use commas as delimiters if you want to open the file in Excel
// use "/r" to add carriage returns
fileOut.writeln("SKU, Date");
// Write another line to .log file
// var TodaysDate = new Date();
fileOut.write(varFileName + "_"+varFileType+".jpg\r");
// stop writing to the file
fileOut.close();
// Open the file in it's associated application
// .log files are associated with the "Console" on OS X
fileOut.execute();
但问题在于,对于脚本处理的每个新图像,它只是重新创建相同的 .csv 文件。而.csv文件中出现的全是一行图片名称。
我试过在线搜索一些答案,但给出的唯一答案是如何创建基本日志文件。或来自多个不同名称层的日志文件。
我也试图创造一些条件,如果日志已经创建,不要创建新的,而是使用现有的并且简单地 writeln(filename) 或 "\r"+filename\r 。但它只是忽略它,并继续创建新文件。
如有任何建议,我们将不胜感激。
Problem with the current log.csv that it shows only 1 line of image name
最佳答案
将脚本的最后部分(即写入文本文件的部分)替换为以下内容:
// Create the log file
var fileOut = new File(folderName+"time_test.txt");
// Check if the file already exists.
if (!fileOut.exists) {
fileOut.open("w");
fileOut.writeln("SKU, Date");
fileOut.writeln(varFileName + "_"+varFileType+".jpg");
} else {
fileOut.open("a");
fileOut.writeln(varFileName + "_"+varFileType+".jpg");
}
// stop writing to the file
fileOut.close();
// Open the file in it's associated application
// .log files are associated with the "Console" on OS X
fileOut.execute();
解释
首先需要检查.txt
文件是否已经存在,可以通过以下行:
if (!fileOut.exists) { ... }
这只是检查 .txt
文件是否不存在。
注意:开头的 !
- 这意味着如果检查文件是否存在返回 false
。
第一次运行脚本时,检查将返回 false
并使用 "w"
打开 .txt
文件> 参数 - 这意味着写。
这次我们在第一行写标题SKU
和日期
,在第二行写第一个处理的文件的名称。
当脚本再次运行时
if (!fileOut.exists) { ... }
check 返回 true
因为文件已经存在。这次使用 “a”
参数打开 .txt
文件(这意味着 append),处理的文件的名称是写在新的一行作为文件的结尾。
注意事项
.txt
文件通常与 TextEdit 应用程序关联。 TextEdit 不会在文件打开时动态显示对文件内容所做的任何更新。您可能会发现需要关闭 .txt
文件并再次打开它才能看到添加到文件内容中的最新文件名。writeln
而不是write
,所以尾随的\r
并不是没有必要的。关于javascript - 如何制作 log.csv 文件以在一行中记录 400 个 .jpeg 名称 (Photoshop/JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51546831/
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!