Thanx for the tip Andrea. That didn't work but this did, debugging I saw that 
what being returned was a RenderedOp


                RenderedOp ri = (RenderedOp)gc.getRenderedImage();
                sourceBufferedImage = ri.getAsBufferedImage();


Now I figured that I could do the same for getting the BufferedImage for a tif 
image, but no, it does not. Even though the

the instance returned is also a RenderedOp, I run into trouble when trying to 
render the image:


Exception in thread "AWT-EventQueue-0" 
java.lang.ArrayIndexOutOfBoundsException: -2147385344
    at 
java.awt.image.ComponentColorModel.getRGBComponent(ComponentColorModel.java:903)
    at java.awt.image.ComponentColorModel.getRed(ComponentColorModel.java:944)
    at java.awt.image.ComponentColorModel.getRGB(ComponentColorModel.java:1135)
    at sun.java2d.loops.OpaqueCopyAnyToArgb.Blit(CustomComponent.java:145)
    at 
sun.java2d.loops.GraphicsPrimitive.convertFrom(GraphicsPrimitive.java:560)
    at 
sun.java2d.loops.GraphicsPrimitive.convertFrom(GraphicsPrimitive.java:541)
    at sun.java2d.loops.MaskBlit$General.MaskBlit(MaskBlit.java:189)
    at sun.java2d.loops.Blit$GeneralMaskBlit.Blit(Blit.java:204)
    at sun.java2d.pipe.DrawImage.blitSurfaceData(DrawImage.java:955)
    at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:576)
    at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:86)
    at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1026)
    at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:196)
    at sun.java2d.SunGraphics2D.copyImage(SunGraphics2D.java:3082)
    at sun.java2d.pipe.DrawImage.makeBufferedImage(DrawImage.java:332)
    at sun.java2d.pipe.DrawImage.renderImageXform(DrawImage.java:392)
    at sun.java2d.opengl.OGLDrawImage.renderImageXform(OGLDrawImage.java:89)
    at sun.java2d.pipe.DrawImage.transformImage(DrawImage.java:212)
    at sun.java2d.opengl.OGLDrawImage.transformImage(OGLDrawImage.java:100)
    at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3340)
    at 
riskscape.map.internal.render.GridCoverageMapContent.draw(GridCoverageMapContent.java:48)


Even though from exploring in debug both asc and tif both have a grayscale 
color model.

I tried many ways of obtaining a BufferedImage for the tif and the only way 
that worked for me was this:


            ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", file, 
null);
                RenderedImage ri = decoder.decodeAsRenderedImage();
                PlanarImage pi = new NullOpImage(ri, new ImageLayout(ri), null, 
OpImage.OP_IO_BOUND);
                sourceBufferedImage = pi.getAsBufferedImage();


which bypasses reading the file into a grid coverage and sorts of defeats the 
purpose of what I am trying to do.

Why does one work and not the other?

Gaby

________________________________
From: andrea.a...@gmail.com <andrea.a...@gmail.com> on behalf of Andrea Aime 
<andrea.a...@geo-solutions.it>
Sent: Thursday, December 4, 2014 10:28 PM
To: andrea antonello
Cc: Gabriella Turek; geotools users
Subject: Re: [Geotools-gt2-users] grid coverage to bufferedimage


On Thu, Dec 4, 2014 at 7:36 AM, andrea antonello 
<andrea.antone...@gmail.com<mailto:andrea.antone...@gmail.com>> wrote:
How can I go from a grid coverage obtained from an ASCII grid file to a
buffered image ?

RenderedImage renderedImage = coverage.getRenderedImage();

Not sure, but from memory (can't check right now), depending on the file type, 
this should be a BufferedImage. If you have tiles data in the back, I think you 
should also call getData, to make sure that everything is read into a single 
tile and put in the BufferedImage.

A general approach would be:

RenderedImage renderedImage = coverage.getRenderedImage();
PlanarImage.wrapRenderedImage(renderedImage).getAsBufferedImage();

Checking if the renderedImage is already an instance of buffered image would 
like help performance too.

Cheers
Andrea

--
==
GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.

Please, notice that GeoSolutions will be closed for seasonal holidays
from December the 24th to January the 6th
==

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39  339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i 
file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo 
? consentito esclusivamente al destinatario del messaggio, per le finalit? 
indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne 
il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di 
procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro 
sistema. Conservare il messaggio stesso, divulgarlo anche in parte, 
distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalit? diverse, 
costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.



The information in this message and/or attachments, is intended solely for the 
attention and use of the named addressee(s) and may be confidential or 
proprietary in nature or covered by the provisions of privacy act (Legislative 
Decree June, 30 2003, no.196 - Italy's New Data Protection Code).Any use not in 
accord with its purpose, any disclosure, reproduction, copying, distribution, 
or either dissemination, either whole or partial, is strictly forbidden except 
previous formal approval of the named addressee(s). If you are not the intended 
recipient, please contact immediately the sender by telephone, fax or e-mail 
and delete the information in this message that has been received in error. The 
sender does not give any warranty or accept liability as the content, accuracy 
or completeness of sent messages and accepts no responsibility  for changes 
made after they were sent or for other risks which arise as a result of e-mail 
transmission, viruses, etc.

-------------------------------------------------------
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
GeoTools-GT2-Users mailing list
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to