Skip to content

Commit e5435c6

Browse files
committed
Merge with master
2 parents 049108c + 642dea7 commit e5435c6

File tree

2 files changed

+82
-5
lines changed

2 files changed

+82
-5
lines changed

context_blender.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
if (window.CanvasRenderingContext2D){
1+
if (window.CanvasRenderingContext2D && CanvasRenderingContext2D.prototype.getImageData){
22
var defaultOffsets = {
33
destX : 0,
44
destY : 0,
@@ -138,8 +138,8 @@ if (window.CanvasRenderingContext2D){
138138
}
139139
destContext.putImageData(dstD,offsets.destX,offsets.destY);
140140
};
141-
// For other libraries to ask if a blend mode is supported
142-
var modes = CanvasRenderingContext2D.prototype.blendOnto.supportedModes = 'normal src-over screen multiply difference src-in plus add'.split(' ');
143-
var lookup = CanvasRenderingContext2D.prototype.blendOnto.supports = {};
144-
for (var i=0,len=modes.length;i<len;++i) lookup[modes[i]] = true;
141+
// For querying of functionality from other libraries
142+
var modes = CanvasRenderingContext2D.prototype.blendOnto.supportedBlendModes = 'normal src-over screen multiply difference src-in plus add'.split(' ');
143+
var supports = CanvasRenderingContext2D.prototype.blendOnto.supports = {};
144+
for (var i=0,len=modes.length;i<len;++i) supports[modes[i]] = true;
145145
}

test/writeImageAsJS.jsx

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
app.bringToFront();
2+
$.level = 0; // debug level: 0-2 (0:disable, 1:break on error, 2:break at beginning)
3+
4+
function getPixels32( doc ){
5+
var origRuler = app.preferences.rulerUnits;
6+
var origDialogs = app.displayDialogs;
7+
app.preferences.rulerUnits = Units.PIXELS;
8+
app.displayDialogs = DialogModes.NO;
9+
10+
var dup = doc.duplicate("tmpFlat",true);
11+
var w = dup.width.value;
12+
var h = dup.height.value;
13+
var rgba=[];
14+
15+
var sampler = dup.colorSamplers.add( [UnitValue(0.5,"px"), UnitValue(0.5,"px")] );
16+
17+
var px=0;
18+
for (var y=0;y<h;++y){
19+
for (var x=0;x<w;++x){
20+
sampler.move([UnitValue(x+0.5,"px"),UnitValue(y+0.5,"px")]);
21+
22+
rgba[px ] = 0;
23+
rgba[px+1] = 0;
24+
rgba[px+2] = 0;
25+
try{
26+
// The color sampler errors on fully-transparent pixels
27+
var rgb = sampler.color.rgb;
28+
rgba[px ] = rgb.red.toFixed(2).replace('.00','');
29+
rgba[px+1] = rgb.green.toFixed(2).replace('.00','');
30+
rgba[px+2] = rgb.blue.toFixed(2).replace('.00','');
31+
}catch(e){}
32+
px += 4;
33+
}
34+
}
35+
36+
var black = new SolidColor;
37+
black.rgb.red = black.rgb.green = black.rgb.blue = 0;
38+
dup.selection.selectAll();
39+
dup.selection.fill(black,ColorBlendMode.NORMAL,100,true);
40+
dup.flatten();
41+
42+
var px=0;
43+
for (var y=0;y<h;++y){
44+
for (var x=0;x<w;++x){
45+
sampler.move([UnitValue(x+0.5,"px"),UnitValue(y+0.5,"px")]);
46+
rgba[px+3] = (255 - sampler.color.rgb.red).toFixed(2).replace('.00','');
47+
px += 4;
48+
}
49+
}
50+
sampler.remove();
51+
52+
dup.close( SaveOptions.DONOTSAVECHANGES );
53+
app.preferences.rulerUnits = origRuler;
54+
app.displayDialogs = origDialogs;
55+
56+
return {width:w, height:h,rgba:rgba};
57+
}
58+
59+
var start = new Date;
60+
var px = getPixels32( app.activeDocument );
61+
var lap = new Date;
62+
var readTime = (lap-start)/1000;
63+
64+
var outFile = "/C/photoshop_colors.js";
65+
var output = new File(outFile);
66+
output.open("w");
67+
output.writeln("var img = {");
68+
output.writeln("\twidth:"+px.width+",\n\theight:"+px.height+",");
69+
output.writeln("\trgba:["+px.rgba.join(',')+"]");
70+
output.writeln("};");
71+
output.close();
72+
var stop = new Date;
73+
var writeTime = (stop-lap)/1000;
74+
75+
var msg = "Read "+px.width*px.height+"pixels in "+readTime.toFixed(1)+"s";
76+
msg += "\nWrote to '"+outFile+"' in "+writeTime.toFixed(1)+"s";
77+
alert( msg );

0 commit comments

Comments
 (0)