JJMack
Community Expert
JJMack
Community Expert
Activity
‎Jan 23, 2022
11:33 AM
109 Upvotes
My father recently passed away. He was known here as JJMack. This community was a big part of his life. After retiring from IBM, this is where he would spend a great deal of his time trying to help people as best he could. His strength was figuring out how things work, communication was not. Despite this, he was able to amass 38,147 Posts, 9206 Likes, and most importantly 3437 solutions. I'm sure his posts will live on and continue to help people. I work with Photoshop professionally myself and occasionally will research a problem I am having only to find a solution posted here by my father. In the future it will be bitter sweet when this happens again. Goodbye, world.
... View more
‎Jan 01, 2022
07:16 PM
1 Upvote
All the tool should be accessible via the tool Bar. You can edit your tool bar and pull the nested tool out to have the own icon in the toolbar.
... View more
‎Jan 01, 2022
06:54 PM
1 Upvote
Your script works but its UI is not intuitive. To get a 12 Pack a 4 x 3 layout I need to enter 3 x 2 and the layout is not scaled for the web. It is 4000 px by 4500 px.
... View more
‎Jan 01, 2022
02:34 AM
16,777,216 steps vs 281,474,976,710,656 steps a big difference
No device can render all 281,474,976,710,656 colors surly my colorblind eyes can nor distinguish that many colors. Displayed on a cheap TN display there may well be banding.
... View more
‎Jan 01, 2022
02:27 AM
Post the details in the windows crash reports.
... View more
‎Dec 31, 2021
09:07 PM
Are you using a Brush tool or a vector tool to paint with. Photoshop Pen tools can not Paint. The pixels option is grayed out only Path and Shapes can be created with the pen tools. At your Drivers up to date are you now] usint Phptpshop 23.1 Windows 10/11?
... View more
‎Dec 31, 2021
08:54 PM
You can not draw with a Stylus they are for touch support. You can draw with a digitral pen. If you machine support has Pem when you are drawing with your pen you may want to turn off Touch support so you will not get accidental touch gester messing with the image you are drawing.
... View more
‎Dec 31, 2021
08:37 PM
Shoot RAW and Process in 16bit ProPhotoRGB working space. Most devices can not display the full ProPhoto RGB color gamut. None I could afford can.
... View more
‎Dec 31, 2021
08:25 PM
1 Upvote
The first thing you would need to do is crop your Image to some known aspect ratio. So you can scale the Images for the Web, Then you could Tile the image for your packages for web display. A one pack, a two pack, .... a twelve pack. Here I cropped your image to have a 2:3 Aspect ratio. I then wanted to create a 12 Pack for the web. Displays these days normally have at least a ppi resolution of 100ppi. So if I want a 12 pack to have 4 column and 3 rows 4x2" = 8" and 3x3" = 9" at 100 ppi the canvas size would be 800px by 900px and fit on most web devices displays. The Image most likely will be smaller the 8"x 9" many displays will have resolutions higher then 100ppi. So after I crop your image I saved it with its 2:3 Aspect Ratio. Then ran my Paste Image Roll script set to 100ppi 12 copies of images that are scaled to 2" x 3". I selected the saved 2:3 image.
Paste Image Roll Documentation
Paste Image Roll Script
... View more
‎Dec 31, 2021
03:53 PM
I cut that save as png8|png24 action manager code from Adobe's script export layer to files I believd. That script can save just aboul any image file type you want and is coder as a Photoshop Plug-in. I use it to code a saveAs plug-in when Adobe changed SaveAs UI then Adobe listen to the noise that change caused.
... View more
‎Dec 31, 2021
03:41 PM
Even if you shoot Jpeg you show Edit in 16Bit mode and save your work in PSD file. The Jpeg files you save for the web will be 8bit color and the should well if not blown up. Most Displays and Printers I believe are 8bit devices. Editing in 16Bit will produce smoother transition with the way Photoshop process color in the wider color space. You will not get more colors when you change to 16Bit color from 8bit mode as you make Adjustments more color will be used and gradients feathering etc will be smoother.
... View more
‎Dec 31, 2021
02:57 PM
It also looks like you are using Windows 11 and your CPU is slower then Adobe Photoshop requirements 2GHz
Physical processor count: 4 Logical processor count: 8 Processor speed: 1190 MHz = 1.2GHz may be your Lag issue
I will also state my 2GHz workstation is not speed my GPU seem the be supported however it does not bencjmark above the 2K/sec that Adobe recommends.
System architecture: Intel CPU Family:6, Model:13, Stepping:7 with MMX, SSE Integer, SSE FP, SSE2, SSE3, SSE4.1, SSE4.2, AVX, HyperThreading Physical processor count: 12 Logical processor count: 24 Processor speed: 1995 MHz Built-in memory: 40886 MB
Many operations in Photoshop can not or are not thread so with a few fast cores Photoshop will perform better then machines with many slow cores and multiple slow processors. Computer clock seep is very important.
... View more
‎Dec 31, 2021
02:35 PM
If the image are the same size just open the second image and shift drag and drop the adjustment layer.
... View more
‎Dec 31, 2021
01:42 PM
No I stated you can Gaussian blur your layer mask content to smooth out the masking effect.
... View more
‎Dec 31, 2021
08:45 AM
1 Upvote
Adobe recommends if you require Photoshop 3D feature support the you maintain a Computer with Photoshop 2021 version 22.2 installed. Adobe is removing all 3D Support in Photoshop. You will also need to Deactivated Adobe Photoshop 2021 Native Canvas support so Photoshop 3D support will function. IMO you would be better off with Photoshop 2020. However Creative Cloud desktop no longer will install Photoshop 2020.
Perhaps Adobe Substance applications will have support for Alioscopy screens Photoshop 3D is a corpse.
... View more
‎Dec 31, 2021
08:12 AM
Perhaps it is related to an issue Adobe is looking at
... View more
‎Dec 31, 2021
05:16 AM
Is it the Paragraph justification
... View more
‎Dec 30, 2021
08:35 PM
1 Upvote
A vector Mask can not be painted on. You must be painting on a normal layer mask and if you are printing with a soft low opacity tip. It is normal for overlapping brush strokes to build up opacity in overlapping area and if you used use several button clicks it normal for round brush tip areas to show up. You can select areas where you do not like the build up effect and Gaussian blur the mask area to smooth out the masking effect.
Masking knowledge need toe be learned and practice is required to develop masking skills. The Good thing is you can always delete a layer mask and and creat a new mask and you can always be edited and improved on a mask. Masking does no harm to your image..
... View more
‎Dec 30, 2021
08:11 PM
SaveAsPng 24 took 10 seconds the File size was about the sane however the 300PPI resolution settinf was not saved so windows explorer showed 96ppi.
/* =======================================================================
// 2021 John J. McAssey (JJMack)
// ======================================================================= */
// This script is supplied as is. It is provided as freeware.
// The author accepts no liability for any problems arising from its use.
// enable double-clicking from Mac Finder or Windows Explorer
#target photoshop // this command only works in Photoshop CS2 and higher
// bring application forward for double-click events
app.bringToFront();
/////////////////////////////////////////////////////////////////////////
// SET-UP Global Variables //
/////////////////////////////////////////////////////////////////////////
var scriptPath = $.fileName.substr(0,$.fileName.lastIndexOf("/")+1);
var scriptName = $.fileName.substr($.fileName.lastIndexOf("/")+1,$.fileName.lastIndexOf("."));
scriptName = scriptName.substr(0,scriptName.lastIndexOf("."));
var scriptExt = $.fileName.substr($.fileName.lastIndexOf("."));
//alert(scriptPath + scriptName + scriptExt);
// Initialize variables used in mainline
var folderListCopy = new Array;
var fileListCopy = new Array;
var fileTypes = "";
var logData = "";
// Save the current preferences and Set Photoshop to use pixels and display no dialogs
var startRulerUnits = app.preferences.rulerUnits;
var startTypeUnits = app.preferences.typeUnits;
var startDisplayDialogs = app.displayDialogs;
app.displayDialogs = DialogModes.NO;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
try {
startDate = (getDateTime());
var fileName = app.activeDocument.name.replace(/\.[^\.]+$/, ''); // strip the extension off = app.activeDocument.name.replace(/\.[^\.]+$/, ''); // strip the extension off
var fileType = ".png"
var outputFile = new File(Folder.desktop + "/" + fileName + fileType );
//SaveCopyAsPng(6, outputFile, true, true);
SaveAsPNG("~/desktop/" + fileName, "PNG24", false, true);
endDate = (getDateTime());
alert("Start " + startDate + "\n"
+ "End " + endDate + "\nTime "
+ elapseTime(startDate,endDate) + " hrs:min:sec"
);
}
catch(e) { alert(e + ': on line ' + e.line, 'Photoshop Error', true); }
// Return the app preferences
app.preferences.rulerUnits = startRulerUnits;
app.preferences.typeUnits = startTypeUnits;
app.displayDialogs = startDisplayDialogs;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
function SaveCopyAsPng(compression, In, copy, lowerCase) {
var descriptor = new ActionDescriptor();
var descriptor2 = new ActionDescriptor();
descriptor2.putEnumerated( stringIDToTypeID( "method" ), stringIDToTypeID( "PNGMethod" ), stringIDToTypeID( "quick" ));
descriptor2.putEnumerated( stringIDToTypeID( "PNGInterlaceType" ), stringIDToTypeID( "PNGInterlaceType" ), stringIDToTypeID( "PNGInterlaceAdam7" ));
descriptor2.putEnumerated( stringIDToTypeID( "PNGFilter" ), stringIDToTypeID( "PNGFilter" ), stringIDToTypeID( "PNGFilterAdaptive" ));
descriptor2.putInteger( stringIDToTypeID( "compression" ), compression );
descriptor.putObject( stringIDToTypeID( "as" ), stringIDToTypeID( "PNGFormat" ), descriptor2 );
descriptor.putPath( charIDToTypeID( "In " ), In );
descriptor.putInteger( stringIDToTypeID( "documentID" ), 1045 );
descriptor.putBoolean( stringIDToTypeID( "copy" ), copy );
descriptor.putBoolean( stringIDToTypeID( "lowerCase" ), lowerCase );
descriptor.putEnumerated( stringIDToTypeID( "saveStage" ), stringIDToTypeID( "saveStageType" ), stringIDToTypeID( "saveBegin" ));
executeAction( stringIDToTypeID( "save" ), descriptor, DialogModes.NO );
}
function SaveAsPNG(saveFile, PNGtype, Interlace, Transparency) {
//alert("SaveAsPNG(" + saveFile + ", " + PNGtype + ", " + Interlace + ", " + Transparency + ");");
if (PNGtype=="PNG8") {
var id5 = charIDToTypeID( "Expr" );
var desc3 = new ActionDescriptor();
var id6 = charIDToTypeID( "Usng" );
var desc4 = new ActionDescriptor();
var id7 = charIDToTypeID( "Op " );
var id8 = charIDToTypeID( "SWOp" );
var id9 = charIDToTypeID( "OpSa" );
desc4.putEnumerated( id7, id8, id9 );
var id10 = charIDToTypeID( "Fmt " );
var id11 = charIDToTypeID( "IRFm" );
var id12 = charIDToTypeID( "PNG8" );
desc4.putEnumerated( id10, id11, id12 );
var id13 = charIDToTypeID( "Intr" ); //Interlaced
desc4.putBoolean( id13, Interlace );
var id14 = charIDToTypeID( "RedA" );
var id15 = charIDToTypeID( "IRRd" );
var id16 = charIDToTypeID( "Prcp" ); //Algorithm
desc4.putEnumerated( id14, id15, id16 );
var id17 = charIDToTypeID( "RChT" );
desc4.putBoolean( id17, false );
var id18 = charIDToTypeID( "RChV" );
desc4.putBoolean( id18, false );
var id19 = charIDToTypeID( "AuRd" );
desc4.putBoolean( id19, false );
var id20 = charIDToTypeID( "NCol" ); //NO. Of Colors
desc4.putInteger( id20, 256 );
var id21 = charIDToTypeID( "Dthr" ); //Dither
var id22 = charIDToTypeID( "IRDt" );
var id23 = charIDToTypeID( "Dfsn" ); //Dither type
desc4.putEnumerated( id21, id22, id23 );
var id24 = charIDToTypeID( "DthA" );
desc4.putInteger( id24, 100 );
var id25 = charIDToTypeID( "DChS" );
desc4.putInteger( id25, 0 );
var id26 = charIDToTypeID( "DCUI" );
desc4.putInteger( id26, 0 );
var id27 = charIDToTypeID( "DChT" );
desc4.putBoolean( id27, false );
var id28 = charIDToTypeID( "DChV" );
desc4.putBoolean( id28, false );
var id29 = charIDToTypeID( "WebS" );
desc4.putInteger( id29, 0 );
var id30 = charIDToTypeID( "TDth" ); //transparency dither
var id31 = charIDToTypeID( "IRDt" );
var id32 = charIDToTypeID( "None" );
desc4.putEnumerated( id30, id31, id32 );
var id33 = charIDToTypeID( "TDtA" );
desc4.putInteger( id33, 100 );
var id34 = charIDToTypeID( "Trns" ); //Transparency
desc4.putBoolean( id34, Transparency );
var id35 = charIDToTypeID( "Mtt " );
desc4.putBoolean( id35, true ); //matte
var id36 = charIDToTypeID( "MttR" ); //matte color
desc4.putInteger( id36, 255 );
var id37 = charIDToTypeID( "MttG" );
desc4.putInteger( id37, 255 );
var id38 = charIDToTypeID( "MttB" );
desc4.putInteger( id38, 255 );
var id39 = charIDToTypeID( "SHTM" );
desc4.putBoolean( id39, false );
var id40 = charIDToTypeID( "SImg" );
desc4.putBoolean( id40, true );
var id41 = charIDToTypeID( "SSSO" );
desc4.putBoolean( id41, false );
var id42 = charIDToTypeID( "SSLt" );
var list1 = new ActionList();
desc4.putList( id42, list1 );
var id43 = charIDToTypeID( "DIDr" );
desc4.putBoolean( id43, false );
var id44 = charIDToTypeID( "In " );
desc4.putPath( id44, new File(saveFile + ".png") );
var id45 = stringIDToTypeID( "SaveForWeb" );
desc3.putObject( id6, id45, desc4 );
executeAction( id5, desc3, DialogModes.NO );
}
else { //png 24
var id6 = charIDToTypeID( "Expr" );
var desc3 = new ActionDescriptor();
var id7 = charIDToTypeID( "Usng" );
var desc4 = new ActionDescriptor();
var id8 = charIDToTypeID( "Op " );
var id9 = charIDToTypeID( "SWOp" );
var id10 = charIDToTypeID( "OpSa" );
desc4.putEnumerated( id8, id9, id10 );
var id11 = charIDToTypeID( "Fmt " );
var id12 = charIDToTypeID( "IRFm" );
var id13 = charIDToTypeID( "PN24" );
desc4.putEnumerated( id11, id12, id13 );
var id14 = charIDToTypeID( "Intr" );
desc4.putBoolean( id14, Interlace );
var id15 = charIDToTypeID( "Trns" );
desc4.putBoolean( id15, Transparency );
var id16 = charIDToTypeID( "Mtt " );
desc4.putBoolean( id16, true );
var id17 = charIDToTypeID( "MttR" );
desc4.putInteger( id17, 255 );
var id18 = charIDToTypeID( "MttG" );
desc4.putInteger( id18, 255 );
var id19 = charIDToTypeID( "MttB" );
desc4.putInteger( id19, 255 );
var id20 = charIDToTypeID( "SHTM" );
desc4.putBoolean( id20, false );
var id21 = charIDToTypeID( "SImg" );
desc4.putBoolean( id21, true );
var id22 = charIDToTypeID( "SSSO" );
desc4.putBoolean( id22, false );
var id23 = charIDToTypeID( "SSLt" );
var list1 = new ActionList();
desc4.putList( id23, list1 );
var id24 = charIDToTypeID( "DIDr" );
desc4.putBoolean( id24, false );
var id25 = charIDToTypeID( "In " );
desc4.putPath( id25, new File( saveFile + ".png") );
var id26 = stringIDToTypeID( "SaveForWeb" );
desc3.putObject( id7, id26, desc4 );
executeAction( id6, desc3, DialogModes.NO );
}
}
function getDateTime() { // Function for returning current date and time
var date = new Date();
var dateTime = "";
if ((date.getMonth() + 1) < 10) { dateTime += "0" + (date.getMonth() + 1) + "/"; }
else { dateTime += (date.getMonth() + 1) + "/";}
if (date.getDate() < 10) { dateTime += "0" + date.getDate() + "/"; }
else { dateTime += date.getDate() + "/"; }
dateTime += date.getFullYear() + " ";
if (date.getHours() < 10) {dateTime += "0" + date.getHours() + ":"; }
else { dateTime += date.getHours() + ":"; }
if (date.getMinutes() < 10) { dateTime += "0" + date.getMinutes() + ":"; }
else { dateTime += date.getMinutes() + ":"; }
if (date.getSeconds() < 10) { dateTime += "0" + date.getSeconds(); }
else { dateTime += date.getSeconds(); }
return dateTime;
}
function timeString () { // Function for returning raw time
var now = new Date();
return now.getTime()
};
function timeStamp(){
// Get the time and format it
var digital = new Date();
var hours = digital.getHours();
var minutes = digital.getMinutes();
var seconds = digital.getSeconds();
var amOrPm = "AM";
if (hours > 11) amOrPm = "PM";
if (hours > 12) hours = hours - 12;
if (hours == 0) hours = 12;
if (minutes <= 9) minutes = "0" + minutes;
if (seconds <= 9) seconds = "0" + seconds;
// Get the date and format it
var date = new Date();
var d = date.getDate();
var day = (d < 10) ? '0' + d : d;
var m = date.getMonth() + 1;
var month = (m < 10) ? '0' + m : m;
var yy = date.getYear();
var year = (yy < 1000) ? yy + 1900 : yy;
// create a variable with the fully formatted the time and date
// todaysDate = hours + ":" + minutes + ":" + seconds + " " + amOrPm + " - " + day + "/" + month + "/" + year;
// todaysDate = hours + ":" + minutes + ":" + seconds + " " + amOrPm + " - " + month + "/" + day + "/" + year;
MonthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
//todaysDate = hours + ":" + minutes + ":" + seconds + " " + amOrPm + " " + MonthNames[date.getMonth()] + " " + date.getDate() + ", " + year;
todaysDate =MonthNames[date.getMonth()] + " " + date.getDate() + ", " + year +" " + hours + ":" + minutes + ":" + seconds + " " + amOrPm;
return todaysDate;
}
function elapseTime(start,end) {
var date1 = new Date(start);
var date2 = new Date(end);
var diff = date2.getTime() - date1.getTime();
var msec = diff;
var hh = Math.floor(msec / 1000 / 60 / 60);
msec -= hh * 1000 * 60 * 60;
var mm = Math.floor(msec / 1000 / 60);
msec -= mm * 1000 * 60;
var ss = Math.floor(msec / 1000);
msec -= ss * 1000;
return (hh + ":" + mm + ":" + ss);
}
... View more
‎Dec 30, 2021
07:45 PM
1 Upvote
On my slow 2 GHz PC Windows 10 Photoshop 23.1 Save as Copy a PNG scripted Action manager code save a 8000 px by 8000 px PNG lowest compression lager file size to my ssd in 5 seconds.
/* =======================================================================
// 2021 John J. McAssey (JJMack)
// ======================================================================= */
// This script is supplied as is. It is provided as freeware.
// The author accepts no liability for any problems arising from its use.
// enable double-clicking from Mac Finder or Windows Explorer
#target photoshop // this command only works in Photoshop CS2 and higher
// bring application forward for double-click events
app.bringToFront();
/////////////////////////////////////////////////////////////////////////
// SET-UP Global Variables //
/////////////////////////////////////////////////////////////////////////
var scriptPath = $.fileName.substr(0,$.fileName.lastIndexOf("/")+1);
var scriptName = $.fileName.substr($.fileName.lastIndexOf("/")+1,$.fileName.lastIndexOf("."));
scriptName = scriptName.substr(0,scriptName.lastIndexOf("."));
var scriptExt = $.fileName.substr($.fileName.lastIndexOf("."));
//alert(scriptPath + scriptName + scriptExt);
// Initialize variables used in mainline
var folderListCopy = new Array;
var fileListCopy = new Array;
var fileTypes = "";
var logData = "";
// Save the current preferences and Set Photoshop to use pixels and display no dialogs
var startRulerUnits = app.preferences.rulerUnits;
var startTypeUnits = app.preferences.typeUnits;
var startDisplayDialogs = app.displayDialogs;
app.displayDialogs = DialogModes.NO;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
try {
startDate = (getDateTime());
var fileName = app.activeDocument.name.replace(/\.[^\.]+$/, ''); // strip the extension off = app.activeDocument.name.replace(/\.[^\.]+$/, ''); // strip the extension off
var fileType = ".png"
var outputFile = new File(Folder.desktop + "/" + fileName + fileType );
SaveCopyAsPng(6, outputFile, true, true);
endDate = (getDateTime());
alert("Start " + startDate + "\n"
+ "End " + endDate + "\nTime "
+ elapseTime(startDate,endDate) + " hrs:min:sec"
);
}
catch(e) { alert(e + ': on line ' + e.line, 'Photoshop Error', true); }
// Return the app preferences
app.preferences.rulerUnits = startRulerUnits;
app.preferences.typeUnits = startTypeUnits;
app.displayDialogs = startDisplayDialogs;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
function SaveCopyAsPng(compression, In, copy, lowerCase) {
var descriptor = new ActionDescriptor();
var descriptor2 = new ActionDescriptor();
descriptor2.putEnumerated( stringIDToTypeID( "method" ), stringIDToTypeID( "PNGMethod" ), stringIDToTypeID( "quick" ));
descriptor2.putEnumerated( stringIDToTypeID( "PNGInterlaceType" ), stringIDToTypeID( "PNGInterlaceType" ), stringIDToTypeID( "PNGInterlaceAdam7" ));
descriptor2.putEnumerated( stringIDToTypeID( "PNGFilter" ), stringIDToTypeID( "PNGFilter" ), stringIDToTypeID( "PNGFilterAdaptive" ));
descriptor2.putInteger( stringIDToTypeID( "compression" ), compression );
descriptor.putObject( stringIDToTypeID( "as" ), stringIDToTypeID( "PNGFormat" ), descriptor2 );
descriptor.putPath( charIDToTypeID( "In " ), In );
descriptor.putInteger( stringIDToTypeID( "documentID" ), 1045 );
descriptor.putBoolean( stringIDToTypeID( "copy" ), copy );
descriptor.putBoolean( stringIDToTypeID( "lowerCase" ), lowerCase );
descriptor.putEnumerated( stringIDToTypeID( "saveStage" ), stringIDToTypeID( "saveStageType" ), stringIDToTypeID( "saveBegin" ));
executeAction( stringIDToTypeID( "save" ), descriptor, DialogModes.NO );
}
function getDateTime() { // Function for returning current date and time
var date = new Date();
var dateTime = "";
if ((date.getMonth() + 1) < 10) { dateTime += "0" + (date.getMonth() + 1) + "/"; }
else { dateTime += (date.getMonth() + 1) + "/";}
if (date.getDate() < 10) { dateTime += "0" + date.getDate() + "/"; }
else { dateTime += date.getDate() + "/"; }
dateTime += date.getFullYear() + " ";
if (date.getHours() < 10) {dateTime += "0" + date.getHours() + ":"; }
else { dateTime += date.getHours() + ":"; }
if (date.getMinutes() < 10) { dateTime += "0" + date.getMinutes() + ":"; }
else { dateTime += date.getMinutes() + ":"; }
if (date.getSeconds() < 10) { dateTime += "0" + date.getSeconds(); }
else { dateTime += date.getSeconds(); }
return dateTime;
}
function timeString () { // Function for returning raw time
var now = new Date();
return now.getTime()
};
function timeStamp(){
// Get the time and format it
var digital = new Date();
var hours = digital.getHours();
var minutes = digital.getMinutes();
var seconds = digital.getSeconds();
var amOrPm = "AM";
if (hours > 11) amOrPm = "PM";
if (hours > 12) hours = hours - 12;
if (hours == 0) hours = 12;
if (minutes <= 9) minutes = "0" + minutes;
if (seconds <= 9) seconds = "0" + seconds;
// Get the date and format it
var date = new Date();
var d = date.getDate();
var day = (d < 10) ? '0' + d : d;
var m = date.getMonth() + 1;
var month = (m < 10) ? '0' + m : m;
var yy = date.getYear();
var year = (yy < 1000) ? yy + 1900 : yy;
// create a variable with the fully formatted the time and date
// todaysDate = hours + ":" + minutes + ":" + seconds + " " + amOrPm + " - " + day + "/" + month + "/" + year;
// todaysDate = hours + ":" + minutes + ":" + seconds + " " + amOrPm + " - " + month + "/" + day + "/" + year;
MonthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
//todaysDate = hours + ":" + minutes + ":" + seconds + " " + amOrPm + " " + MonthNames[date.getMonth()] + " " + date.getDate() + ", " + year;
todaysDate =MonthNames[date.getMonth()] + " " + date.getDate() + ", " + year +" " + hours + ":" + minutes + ":" + seconds + " " + amOrPm;
return todaysDate;
}
function elapseTime(start,end) {
var date1 = new Date(start);
var date2 = new Date(end);
var diff = date2.getTime() - date1.getTime();
var msec = diff;
var hh = Math.floor(msec / 1000 / 60 / 60);
msec -= hh * 1000 * 60 * 60;
var mm = Math.floor(msec / 1000 / 60);
msec -= mm * 1000 * 60;
var ss = Math.floor(msec / 1000);
msec -= ss * 1000;
return (hh + ":" + mm + ":" + ss);
}
... View more
‎Dec 30, 2021
03:53 PM
Modify 'apply to all open documents' script I shared with you in other thread, by using:
Without the link it hard to to tell what else the share script would do. Its a one liner in the first place
if (documents.length)for(var i=0;i<documents.length;i++)documents[i].rotateCanvas(-90)
... View more
‎Dec 30, 2021
03:41 PM
Text characters are an ASCII code for a character in a character set it has no size you have some amount of text characters in a character font set font size you set to 45 may be relative to point size and document resolution you need pixels for character details and you need sufficient amount to form the characters and font size need the readable. Your document canvas is X pixel wide and Y pixels high and pixels are displayed at some pixel density PPI. Text is very complex. You Document Canvas has a canvas size just so many pixels, And you want text in some area over the canvas and you want the the text to be readable. You need to set up some specifications requirement for what you want handle to know what is required for what you want to do. Your Hail Mary Text will not fit in a document 100 px by 100 px and be readable. Text is complex. Your design need to be do able You need the proper amount of canvas to handle a limited amount of text. Many font have proportional characters and word length can cause spacing issues. Design your process well. A good design is required Text has many dependencies.
... View more
‎Dec 30, 2021
02:39 PM
1 Upvote
It all about Adobe's Photoshop Object Model
A Photoshop Document has a Layer Set. In the Layer Set you can have other Layer Sets and Art Layers. To Process the whole document you need to Process the Document's Layer Set recursively for there can be nested Layer Sets. Its About Adobe Photoshop Objects and Object's Properties and Methods
Doc.layers.add() is invalid there is no Method .add() for the Photoshop DOM Layers collection the Array contains objects that are Layers and LayerSets.
Layers objects are artLayers and Doc.artLayers.add() is a valid method
... View more
‎Dec 30, 2021
12:10 PM
Is that youer interpretation of
I have a question:
can a script rotate all open images counterclockwise?
one is all not in book however, I always failed English
... View more
‎Dec 30, 2021
12:06 PM
You know this so do it.
... View more
‎Dec 30, 2021
11:56 AM
2 Upvotes
So you need to use different code set a var using HW.text.replace(/\n/g,'\r') make it a string get its size parse it content etc handle its size. Then set TextRef.contents with the proper amount of text and set TextRef.size and TextRef.font for a good size and font for your document design. I do not know how to handle text it to complex for my 80 year old brain. My eyes and brain can not handle regular expressions. Pecking the on a keyboard I always mess the up... good luck to ya...
... View more
‎Dec 30, 2021
11:30 AM
You tween between two frames. The layer visible in those two frames composite should be the sames layers and there should be differences in layers positioning, opacity, effects between the two frames. If there are no differences all frames add will be identical as the originals two frames. When there are differences tween (between) the two frames will create transition frames with the approate options checje whict are bt default checked.
... View more
‎Dec 30, 2021
10:23 AM
Text is far from easy there are may characters set special characters languages left to right etc. Not my cup of tea... You need to handle sizes and the amount of text.. You need to add code to address the sizes. Document size. The Paragraph area size and position over the canvas. Smallest Text print size you will finds acceptable will limit the the number of characters the can be handled. Language with long words can have adverse spacing issues and reduce the amount of characters that can be handled. Your ScriptUI edit text area may need to sized based one the current Documents size and resolution. I do not script text much and what I have scripted is not always usable for any size document. The only suggestion I have is handle sizes. Its your Document sizes and design, your Script and your boundaries. Size matters. Small text is not readable size matters. Handle sizes design well.
... View more
‎Dec 30, 2021
10:16 AM
1 Upvote
You need to add logic to handle document size and text size the abount of text entered in your example is an example bad code. Size matters.
... View more
‎Dec 30, 2021
09:52 AM
Running you script it look like the Document canvas size does become the Paragraph bounds and you positing to the documents center so 3/4 of the paragraph area is off canvas.
Moving the layer more on canvas I see the bounds is not the canvas size perhaps its your dialog edit text areas
0,0 - 500,300 which is still taller than my canvas size
... View more