:: java advanced imagingds :: 36APG - JAI david sedláček javaai/jai/index.html
:: java advanced imagingds :: java – awt Základní práce s obrázky GIF, JPG, PNG –java.awt.Image –java.awt.image –java.awt.Toolkit getImage( String name ); drawImage( …, ImageObserver ); createImage( …, ImageProducer ) ;
:: java advanced imagingds :: awt – nacteni a vykresleni obr. void nactiAVykresli() { Toolkit t = this.getToolkit(); img = t.getImage(“image.jpg”); repaint(); }
:: java advanced imagingds :: java.awt.Graphics2D Rozšíření původního awt GIF,JPG,PNG –BufferedImage – Double buffering –Filtry Shrapen, Blur – filtry ostrosti Transformation - transforamace ClipImage - ořezávání obrázku Rendering kvality – alpha, antialiasing, color, dithering, interpolation, render. Speed …
:: java advanced imagingds :: //vytvoření a využití doublebufferingu bi = (BufferedImage)createImage(w, h); big = bi.createGraphics(); big.setColor(Color.white); big.drawImage(img); //vykreslení celého obrázku g2.drawImage(bi, 0, 0, this);
:: java advanced imagingds ::
:: java advanced imagingds :: Java Advanced Imaging API Zvláštní knihovna com.sun.media.jai.codec com.sun.media.jai.codecimpl –nevýhoda – není v SDK, problémy s instalací –výhoda – může se vyvíjet „samostatně“ –ale není jisté zda to tak zůstane K běhu nepotřebuje awt –zobrazovat bez awt nejde Mnohá rozšíření oproti Graph2D
:: java advanced imagingds :: podporované formáty BMP GIF (pouze dekodér) FlashPix (pouze dekodér) JPEG PNG PNM TIFF WBMP
:: java advanced imagingds :: //načtení ze souboru String filename = „jmeno.format”; RenderedImage image = JAI.create("fileload", filename); //načtení z adresy URL url = „adresa.cz“ RenderedImage image = JAI.create(„url", url); ic = new ImageDisplay(image); //ic se přiřadí panelu nebo canvasu
:: java advanced imagingds :: //ukládání obrázku RenderedImage image= „ukladany obr“; String filename = „jmeno souboru“; String format = „format souboru“; RenderedOp op = JAI.create(„filestore“, image, filename, format);
:: java advanced imagingds :: jak JAI pracuje JAI je plně objektové – jako java Na zásobníkovém principu –Každý obrázek má vlastní parametrový blok (RenderedOp, ParameterBlock ) –Postupně se zpracovávají paramatery směrem od kořene Rendered / Renderable graphs
:: java advanced imagingds :: jak JAI pracuje
:: java advanced imagingds :: //vytvoření operátorů RenderedOp im0 = JAI.create("constant", param1); RenderedOp im1 = JAI.create("constant", param2); //spojení obrázků dohromady RenderedOp im2 = JAI.create("add", im0, im1);
:: java advanced imagingds :: JAI class javax.media.jai –Jádro JAI javax.media.jai.iterator –Rozšířené operace javax.media.jai.operator –Hlavní Operátory javax.media.jai.widget –Zobrazování – scrollingWindow atd.
:: java advanced imagingds :: operátory Point –add, and,composite, divide, invert, max ….. Area –border, boxFilter, convolve, crop, medianFilter Geometrics –affine, rotate, scale, shear, translate, warp Color Quantization –errorDiffusion, orderedDither
:: java advanced imagingds :: operátory File –AWTImage, BMP, encode, fileLoad, fileStore, format, GIF, stream, URL,... Frequency –conjugate,DCT, DFT, phase, polarToComplex Statistical –Extrema, histogram, mean Edge Extraction, Miscelaneous
:: java advanced imagingds :: operátory ParameterBlock pb = new ParameterBlock(); pb.addSource(src1); pb.addSource(src2); target = JAI.create("add", pb, null); //add, subtract, multiply, divide
:: java advanced imagingds :: JAI Rendering Hints HINT_BORDER_EXTENDER HINT_IMAGE_LAYOUT –Width, height, minX, minY, colorModel,… HINT_INTERPOLATION HINT_OPERATION_BOUND HINT_PNG_EMIT_SQUARE_ PIXELS
:: java advanced imagingds :: JAI Rendering Hints layout = new ImageLayout(); layout.setMinX(200); layout.setMinY(200); RenderingHints rh = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout); // scale operace PlanarImage im2 = (PlanarImage)JAI.create("scale", pb, layout)
:: java advanced imagingds :: hodnocení JAI ++ ‡Podporované formáty ‡Jednoduché použití (přes operátory) ‡Client-Server podpora ‡Dobrá spolupráce s AWT -- –Není v SDK ani 1.5
:: java advanced imagingds :: zdroje media/jai/forDevelopers/jai1_0_1guide-unc/ aai/jai/index.html