Copy link to clipboard
Copied
I create projects to be printed out on a large format so 300dpi is a minimum resolution.
Using Artboards is really handy as projects are held in one file and I can see them next to each other.
There's one downfall I'm facing which makes Artboards useless to me.
I simply am not able to save/export each artboard as a separate PNG file in a resolution different than 75ppi/dpi.
The only way I'm able to do it is by NOT using multiple Artboards. Only norman file and with Save As option results in desired resolution.
Can anyone help and reveal the trick to save/export multiple Artboards to PNG files in a resolution higher than 75?
PS.
I'm using the newest updated version of Photoshop and File -> Export -> Artboards to files.. doesn't work, and I still get 75 resolution using that option.
It looks like Artboards (multiple in one document) functionalities are made for digital output only.
People who want to use it for printouts will have a hard time as they more often than not need res higher than 72 ppi (dpi).
This is only an issue if using the export command which is designed to remove such metadata... And the script provided with Photoshop to export all artboards uses the export option.
Keep in mind that a file 3000x5000px @ 72ppi is just as "high resolution" as a
...Copy link to clipboard
Copied
PPS
Save As option with multiple Artboards saves all artboards in one PNG file and not as a separate files
Copy link to clipboard
Copied
Export does not set a resolution, so you get the default (might show up as 72, conceivably 75, or other values). You don't seem to be able to get what you want in one step.
This used to be more clear when it was called "Save for web". You'd hope that Adobe intended "Export" for other than web use, but apparently not. Unfortunately, not everyone read the memo inside Adobe, so non-web functions have been added to Export.
Copy link to clipboard
Copied
(Of course you can do it in two steps, let us know if you don't see the way).
Copy link to clipboard
Copied
I tried exporting and then using actions to change the resolution back to 300 but I'm worried there's a data loss along the way. Shrink down to 72 and then stretch back to 300.
Copy link to clipboard
Copied
It's not 300 or 72.
At 1 or 2 meters, around 150-170 should be fine and anything more is wasted. There's no way you can look at one inch and visually distinguish 150 individual pixels from a meter away. If you can, you're a medical sensation
There are tables for this - ppi vs viewing distance. I don't have them right now.
Copy link to clipboard
Copied
Yes, I can't see the pixels but the difference is in the "feeling". Low res pirntouts look like "graphics" while high res look like a "pictures".
Different paper quality also requires different file res. Anyways 72 is not enough for sure.
Copy link to clipboard
Copied
Another method below that only affects the metadata:
Re: Exporting PNG files with 300 pixels/inch resolution and sRGB color profile
Copy link to clipboard
Copied
I tried the ExifTool but can't get it to work. After a while, I understood it doesn't change the way how Photoshop exports the files but it needs to be used afterward to process all files (dumb me, I know LOL). And all that code lines you need to type which I don't understand at all.
Copy link to clipboard
Copied
Export is not intended for print files - it's for web, screen and mobile devices.
Since resolution metadata (ppi) is irrelevant on screen, it is stripped altogether from the file. A file coming out of Export has no ppi whatsoever. The ppi you're getting is the default assignment in whatever application you're reopening the file into. In Photoshop it's 72, in most native Windows apps it's 96.
One more thing: You don't need 300 ppi for large format prints. You probably need a lot less, because it's seen from farther away. "300 ppi for print" is a myth and a misunderstanding. 300 is for book and magazine print to be held at less than arm's length.
Copy link to clipboard
Copied
So it looks like I can't be using Artboards at all at the moment.
I'm not able to save each Artboard as a separate file using Save As, the only way to do it is to use the Export option and that will not let me keep my desired resolution.
I make posters designs (A3 & A2 format) which are looked at from not so far of a distance, so resolution really matters, otherwise I wouldn't be spending time on finding a solution. Really, 300 dpi looks much better than 72ppi (my bad, it's 72, not 75) when you look at the poster from 1-2 meters. Trying to convince me that I don't need high res is pointless because I sometimes even need 600dpi for really detailed work and the difference between high and low res print out is dramatic.
If it can't be done, then fair enough, I'll move on and do my job the old way, without Artboards and use Save As.
Petty coz I really liked the workflow using Artboards.
T
Copy link to clipboard
Copied
No data loss if
1. You use PNG (not JPEG)
2. You open, use Image Size, save
3. You do not use subsample/downsample
Copy link to clipboard
Copied
It looks like Artboards (multiple in one document) functionalities are made for digital output only.
People who want to use it for printouts will have a hard time as they more often than not need res higher than 72 ppi (dpi).
I still like to see one project next to another, so this is how I work:
1. create my projects on multiple Artboards;
2. open new document with one Artboard only or standard PS doc;
3. copy all layers from one artboard and paste it into a new document;
4. Save As (this saves PNG with document res);
5. repeat for all artboards I have;
It's a slow process but at least I get PNG files in res I want.
I simply gave up in Googling up and asking for a solution. Might not exist at the moment. And I have enough of hearing I don't need high res or that PNG format is not for printouts. To me, if that was the case I would not be able to save high res PNG at all in Photoshop or any other software, and yet I can do it in PS using Save As, just not with the multiple Artboards (it saves all Artboards in one file instead of separate file for each Artboard). I hope the Adobe team will notice not only digital creators want to use it.
Copy link to clipboard
Copied
It looks like Artboards (multiple in one document) functionalities are made for digital output only.
People who want to use it for printouts will have a hard time as they more often than not need res higher than 72 ppi (dpi).
This is only an issue if using the export command which is designed to remove such metadata... And the script provided with Photoshop to export all artboards uses the export option.
Keep in mind that a file 3000x5000px @ 72ppi is just as "high resolution" as a file 3000x5000px @ 300ppi – they both have the same total number of pixels.
To work around the issue, you need to use a script that is using save as PNG rather than export as PNG. Note that save as does not retain any ICC colour profiles... And if you attempt to open the PNG and use export to retain an assigned ICC profile, you will lose the resolution metadata and be back where you started!
Save/Export Method | Resolution Metadata Retained | ICC Profile Retained |
---|---|---|
Save As PNG | Yes | No |
Export As PNG | No | Yes |
Export Save for Web PNG | No | Yes |
As of CC2018, no single method retains both the resolution and ICC profile metadata for a PNG.
(P.S.: The PNG specification uses pixels per metre not PPI or DPI – with 11811 ppm the equivalent of 300 ppi)
This script only uses the artboard name for the save as PNG:
// 2019 - Hacked to save as PNG retaining PNG-pHYs:PixelsPerUnit metadata
// Saves using artboard names only
// https://forums.adobe.com/message/11082022
// Originall script author below:
// ============================================================================
// artboardsToPNG.jsx - Adobe Photoshop Script
// Version: 0.6.0
// Requirements: Adobe Photoshop CC 2015, or higher
// Author: Anton Lyubushkin (nvkz.nemo@gmail.com)
// Website: http://lyubushkin.pro/
// ============================================================================
// Installation:
// 1. Place script in:
// PC: C:\Program Files\Adobe\Adobe Photoshop CC#\Presets\Scripts\
// Mac: <hard drive>/Applications/Adobe Photoshop CC#/Presets/Scripts/
// 2. Restart Photoshop
// 3. Choose File > Scripts > artboardsToPNG
// ============================================================================
#target photoshop
app.bringToFront();
var docRef = app.activeDocument,
allArtboards,
artboardsCount = 0,
inputFolder = Folder.selectDialog("Select an output folder for the save as PNG");
if (inputFolder) {
function getAllArtboards() {
try {
var ab = [];
var theRef = new ActionReference();
theRef.putProperty(charIDToTypeID('Prpr'), stringIDToTypeID("artboards"));
theRef.putEnumerated(charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
var getDescriptor = new ActionDescriptor();
getDescriptor.putReference(stringIDToTypeID("null"), theRef);
var abDesc = executeAction(charIDToTypeID("getd"), getDescriptor, DialogModes.NO).getObjectValue(stringIDToTypeID("artboards"));
var abCount = abDesc.getList(stringIDToTypeID('list')).count;
if (abCount > 0) {
for (var i = 0; i < abCount; ++i) {
var abObj = abDesc.getList(stringIDToTypeID('list')).getObjectValue(i);
var abTopIndex = abObj.getInteger(stringIDToTypeID("top"));
ab.push(abTopIndex);
}
}
return [abCount, ab];
} catch (e) {
alert(e.line + '\n' + e.message);
}
}
function selectLayerByIndex(index, add) {
add = undefined ? add = false : add
var ref = new ActionReference();
ref.putIndex(charIDToTypeID("Lyr "), index + 1);
var desc = new ActionDescriptor();
desc.putReference(charIDToTypeID("null"), ref);
if (add) desc.putEnumerated(stringIDToTypeID("selectionModifier"), stringIDToTypeID("selectionModifierType"), stringIDToTypeID("addToSelection"));
desc.putBoolean(charIDToTypeID("MkVs"), false);
executeAction(charIDToTypeID("slct"), desc, DialogModes.NO);
}
function ungroupLayers() {
var desc1 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
desc1.putReference(charIDToTypeID('null'), ref1);
executeAction(stringIDToTypeID('ungroupLayersEvent'), desc1, DialogModes.NO);
}
function crop() {
var desc1 = new ActionDescriptor();
desc1.putBoolean(charIDToTypeID('Dlt '), true);
executeAction(charIDToTypeID('Crop'), desc1, DialogModes.NO);
}
function saveAsPNG(_name) {
png_Opt = new PNGSaveOptions();
png_Opt.compression = 0;
png_Opt.interlaced = false;
app.activeDocument.saveAs(File(inputFolder + '/' + _name + '.png'), png_Opt, true);
}
function main(i) {
selectLayerByIndex(allArtboards[1][i]);
var artboardName = app.activeDocument.activeLayer.name;
executeAction(stringIDToTypeID("newPlacedLayer"), undefined, DialogModes.NO);
executeAction(stringIDToTypeID("placedLayerEditContents"), undefined, DialogModes.NO);
app.activeDocument.selection.selectAll();
ungroupLayers();
crop();
saveAsPNG(artboardName);
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
allArtboards = getAllArtboards();
artboardsCount = allArtboards[0];
for (var i = 0; i < artboardsCount; i++) {
docRef.suspendHistory('Save Artboard as PNG', 'main(' + i + ')');
app.refresh();
app.activeDocument.activeHistoryState = app.activeDocument.historyStates[app.activeDocument.historyStates.length - 2];
}
}
// Added another close step as the original script was not closing in CC2018
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
This script uses the filename plus _artboard name for the save as PNG:
// 2019 - Hacked to save as PNG retaining PNG-pHYs:PixelsPerUnit metadata
// Saves using filename and artboard names
// https://forums.adobe.com/message/11082022
// Originall script author below:
// ============================================================================
// artboardsToPNG.jsx - Adobe Photoshop Script
// Version: 0.6.0
// Requirements: Adobe Photoshop CC 2015, or higher
// Author: Anton Lyubushkin (nvkz.nemo@gmail.com)
// Website: http://lyubushkin.pro/
// ============================================================================
// Installation:
// 1. Place script in:
// PC: C:\Program Files\Adobe\Adobe Photoshop CC#\Presets\Scripts\
// Mac: <hard drive>/Applications/Adobe Photoshop CC#/Presets/Scripts/
// 2. Restart Photoshop
// 3. Choose File > Scripts > artboardsToPNG
// ============================================================================
#target photoshop
app.bringToFront();
var fName = app.activeDocument.name.replace(/\.[^\.]+$/, '') // Added a new filename variable with regex to remove filename extension
var docRef = app.activeDocument,
allArtboards,
artboardsCount = 0,
inputFolder = Folder.selectDialog("Select an output folder for the save as PNG");
if (inputFolder) {
function getAllArtboards() {
try {
var ab = [];
var theRef = new ActionReference();
theRef.putProperty(charIDToTypeID('Prpr'), stringIDToTypeID("artboards"));
theRef.putEnumerated(charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
var getDescriptor = new ActionDescriptor();
getDescriptor.putReference(stringIDToTypeID("null"), theRef);
var abDesc = executeAction(charIDToTypeID("getd"), getDescriptor, DialogModes.NO).getObjectValue(stringIDToTypeID("artboards"));
var abCount = abDesc.getList(stringIDToTypeID('list')).count;
if (abCount > 0) {
for (var i = 0; i < abCount; ++i) {
var abObj = abDesc.getList(stringIDToTypeID('list')).getObjectValue(i);
var abTopIndex = abObj.getInteger(stringIDToTypeID("top"));
ab.push(abTopIndex);
}
}
return [abCount, ab];
} catch (e) {
alert(e.line + '\n' + e.message);
}
}
function selectLayerByIndex(index, add) {
add = undefined ? add = false : add
var ref = new ActionReference();
ref.putIndex(charIDToTypeID("Lyr "), index + 1);
var desc = new ActionDescriptor();
desc.putReference(charIDToTypeID("null"), ref);
if (add) desc.putEnumerated(stringIDToTypeID("selectionModifier"), stringIDToTypeID("selectionModifierType"), stringIDToTypeID("addToSelection"));
desc.putBoolean(charIDToTypeID("MkVs"), false);
executeAction(charIDToTypeID("slct"), desc, DialogModes.NO);
}
function ungroupLayers() {
var desc1 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
desc1.putReference(charIDToTypeID('null'), ref1);
executeAction(stringIDToTypeID('ungroupLayersEvent'), desc1, DialogModes.NO);
}
function crop() {
var desc1 = new ActionDescriptor();
desc1.putBoolean(charIDToTypeID('Dlt '), true);
executeAction(charIDToTypeID('Crop'), desc1, DialogModes.NO);
}
function saveAsPNG(_name) {
png_Opt = new PNGSaveOptions();
png_Opt.compression = 0;
png_Opt.interlaced = false;
app.activeDocument.saveAs(File(inputFolder + '/' + fName + '_' + _name + '.png'), png_Opt, true);
}
function main(i) {
selectLayerByIndex(allArtboards[1][i]);
var artboardName = app.activeDocument.activeLayer.name;
executeAction(stringIDToTypeID("newPlacedLayer"), undefined, DialogModes.NO);
executeAction(stringIDToTypeID("placedLayerEditContents"), undefined, DialogModes.NO);
app.activeDocument.selection.selectAll();
ungroupLayers();
crop();
saveAsPNG(artboardName);
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
allArtboards = getAllArtboards();
artboardsCount = allArtboards[0];
for (var i = 0; i < artboardsCount; i++) {
docRef.suspendHistory('Save Artboard as PNG', 'main(' + i + ')');
app.refresh();
app.activeDocument.activeHistoryState = app.activeDocument.historyStates[app.activeDocument.historyStates.length - 2];
}
}
// Added another close step as the original script was not closing in CC2018
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
Update 2021: Script code reformatted for new forum software.
Copy link to clipboard
Copied
Stephen_A_Marsh you are a star!
Your scripts work like a charm
Copy link to clipboard
Copied
I'm glad your happy KeramS. Full credit goes to the original script author Anton Lyubushkin, I just hacked the script to suit.
Please be aware that there is no error checking for artboards that have had their visibility turned off, the script will error/stall and you need to be careful that you don't save the open image in this state as destructive temporary workings will overwrite the original file.
Copy link to clipboard
Copied
Once again, thank you for sharing.
I modified this script a bit adding compression. Without it, there was no control over that aspect.
Sometimes compressed PNGs are handy,
Here's the modified part:
function saveAsPNG(_name) {
png_Opt = new PNGSaveOptions();
png_Opt.compression = 5;
png_Opt.interlaced = false;
app.activeDocument.saveAs(File(inputFolder + '/' + fName + '_' + _name + '.png'), png_Opt, true);
}
Copy link to clipboard
Copied
I was considering adding in the PNGSaveOptions, however, I decided to push the code out as it was for expediency.
EDIT: I'm getting the same file size with the original default of no compression vs. the compression level of 5... Even manual save as commands with smallest vs largest file size are pretty much the same, so this is likely due to image content. If you are seeing file size savings that is great, as I was not sure if there was a script error or not and I have not had the time for testing with different images.
Copy link to clipboard
Copied
@Stephen_A_Marsh wrote:
Save/Export Method Resolution Metadata Retained ICC Profile Retained Save As PNG Yes No Export As PNG No Yes Export Save for Web PNG No Yes
As of CC2018, no single method retains both the resolution and ICC profile metadata for a PNG.
(P.S.: The PNG specification uses pixels per metre not PPI or DPI – with 11811 ppm the equivalent of 300 ppi)
As this topic was just bumped, it is time to update the info above!
Photoshop 2021 version, results reported via ExifTool:
[System] FileName : 300ppi-sRGB.png
[File] FileType : PNG
[PNG-pHYs] PixelsPerUnitX : 11811
[PNG-pHYs] PixelsPerUnitY : 11811
[PNG-pHYs] PixelUnits : meters
[XMP-xmp] CreatorTool : Adobe Photoshop 22.5 (Macintosh)
[XMP-photoshop] ICCProfileName : sRGB IEC61966-2.1
All good so far! Save As appears to now include both the resolution info (11811 ppm = 300 ppi) and some of the ICC profile!
When Photoshop opens the same file, one is still presented with a missing profile message and a note that PNG does not support ICC profiles:
So only the resolution metadata is retained, no change from 2018...
For Photoshop 2022:
Finally, both the resolution and ICC profile are finally retained when the Save As PNG is opened back into Photoshop!
Copy link to clipboard
Copied
Thank you so much for asking this question. I struggled with the same question too. The wrong res also causes wrong printing size, which is very annoying. I searched for a while and also found that it's impossible to print each Artboards from Photoshop. You have to convert it into another file type(jpg, pdf, png, etc.) and then print it, very inconvenient. I think the reason is the seam: Artboard is for digital designers! Therefore, printing related function is not yet well-developed.
It seems that the only way is giving up Artboards and choosing Save As. I hope Adobe can improve this soon.
Copy link to clipboard
Copied
Let me add my $0.02. What matters is pixel count, not what is set as pixel per inch, at least it is not critical and can be "easily" solved.
For example: if you want to print A4 format which is 8x11 inches then learn at what resolution it will be printed. If you print at 300 resolution then simply multiply 8x300 and 11x300. If you have 2400x3300px file then you are good to go. If there is a problem what is set as ppi in file you will solve that problem on this or another way.