/******************************************************************** * * PhotoGrok Script * * Example sharpening filter for viewed images. * * **********************************************************************/ // create a painter to sharpen image var painter = function(gfx, image, ig, pp){ // do not sharpen if image is being dragged or zoomed if(image != null && !pp.dragging && !pp.zooming){ // only sharpen visible part of a magnified image var r = pp.getImageRect(image); gfx.drawImage(sharpen(image.getSubimage(r.x, r.y, r.width, r.height)), Math.max(pp.imageX, 0), Math.max(pp.imageY, 0), null); } }; setPainter(painter); var JAI = java.awt.image; //this is Java 8 specific //var arr = Java.to([0,-.125,0,-.125,1.5,-.125,0,-.125,0], "float[]"); // create a Java float array - this syntax works in Java 6, 7 and 8 // 3x3 kernel array (values should add up to 1 for sharpening filter) var arr = java.lang.reflect.Array.newInstance(java.lang.Float.TYPE, 9); arr[0] = 0; arr[1] = -.125; arr[2] = 0; arr[3] = -.125; arr[4] = 1.5; arr[5] = -.125; arr[6] = 0; arr[7] = -.125; arr[8] = 0; function sharpen(img){ var simg = new JAI.BufferedImage(img.getWidth(), img.getHeight(), JAI.BufferedImage.TYPE_INT_RGB); var g = simg.createGraphics(); g.drawImage(img, 0, 0, null); g.dispose(); var kernel = new JAI.Kernel(3,3,arr); var op = new java.awt.image.ConvolveOp(kernel, JAI.ConvolveOp.EDGE_NO_OP, null); return op.filter(simg, null); }