xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas DeWeese <Thomas.DeWe...@Kodak.com>
Subject Re: outofmemory error in batik transcoder
Date Thu, 23 Oct 2003 12:43:44 GMT
GVS Srinivas wrote:

> hi,
> thanks a lot .i will try that now.but what is "img" and "sm" in
> (GraphicsUtil.wrap(img), sm)

   Look at the code in TiledImageTranscoder (I just cut part of
the file to give you an idea of where I was talking about...


> cheers
> GVS
> 
> 
> -----Original Message-----
> From: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
> Sent: Thursday, October 23, 2003 1:30 PM
> To: Batik Users
> Subject: Re: outofmemory error in batik transcoder
> 
> 
> GVS Srinivas wrote:
> 
> 
>> hi,
>>i am sorry if i conveyed that tiffencoding is not solving my
> 
> problem.infact
> 
>>as mentioned in my earlier mail,i didnt quite get through how to encode
> 
> the
> 
>>tiff image on the fly.i was not quite sure what to pass the argument for
>>encoder.encode().
>>please guide me.
>>here is the code.i am doing this in a servlet filter
>>=======================================================================
>>	response.setContentType("image/tiff");
>>	String svgJpeg="svgTansformedImage"; 
>>	String headerString="attachment"+" filename=\""+ svgJpeg +".tiff\"";
>>	response.setHeader("Content-Disposition", "inline filename=\""+
>>svgJpeg +".tiff\""); 
>>	TiledImageTranscoder t = new TiledImageTranscoder();
> 
> 
>     You need to modify the transcode method of the TiledImageTranscoder.
> The Current code looks like:
> 
>              RenderedImage rimg = new FormatRed(GraphicsUtil.wrap(img), sm);
> 
>              TIFFImageEncoder enc = new TIFFImageEncoder
>                  (output.getOutputStream(), null);
>              enc.encode(rimg);
> 
> 
> The new code will look something like:
> 
>              RenderedImage rimg = new FormatRed(GraphicsUtil.wrap(img), sm);
> 
>              TIFFEncodeParam param = new TIFFEncodeParam();
>   	    param.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2);
>              // Perhaps set other param's (tiled, JPEG Params).
> 
>              TIFFImageEncoder enc = new TIFFImageEncoder
>                  (output.getOutputStream(), param);
>              enc.encode(rimg);
> 
> 
> 
> 
>>	t.addTranscodingHint(KEY_WIDTH, new Float(10240));
>>	TranscoderInput input =
>>        new TranscoderInput( new StringReader(outputSVGString) );//the
>>outputSVGString is the svg string
>>	
>>// which i want to convert as an image
>>	try {
>>      TranscoderOutput output =
>>            new TranscoderOutput(response.getOutputStream());
>>	t.transcode(input, output);
>>	TIFFEncodeParam param = new TIFFEncodeParam();
>>	param.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2);
>>	ImageEncoder encoder = ImageCodec.createImageEncoder("TIFF",
>>response.getOutputStream(),param);
>>	encoder.encode(?????);//what should  i pass the input as should 
>>				    //i read it from the disk after i save
>>the image
>>	response.getOutputStream().flush();
>>	response.getOutputStream().close();	
>>    	}
>>    	catch (Throwable e)
>>    	{
>>        e.printStackTrace();
>>    	}
>>
>>=======================================================================
>>-----Original Message-----
>>From: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
>>Sent: Thursday, October 23, 2003 12:34 PM
>>To: Batik Users
>>Subject: Re: outofmemory error in batik transcoder
>>
>>
>>GVS Srinivas wrote:
>>
>>
>>
>>
>>>thanks for the suggestion of tiffencoding.i still didnt get through doing
>>>that.
>>
>>
>>   I am _very_ surprised that this didn't solve the problem if the default
>>TiledImageTranscoder did work.
>>
>>
>>
>>>one more suggestion..
>>>there are some JPEGTranscoding hints like Key_Quality,
>>
>>KEY_PIXEL_TO_MM.does
>>
>>
>>>the memory blowing up decrease by adjusting these values,please suggest.
>>>thanks a lot
>>
>>
>>   There are lots of options you can set in the TIFFEncodeParam.  One of
>>them is the JPEG encoding params to use (this allows you to specify
>>the quality setting), this won't significantly affect the amount of memory
>>used to encode the image, but will obviously effect the size of the file
>>on disk.  One option you might try using is to turn on 'tiled' output
>>in the TIFF Encoder.
>>
>>    Once again though I must say that I am very surprised that turning on
>>JPEG Encoding caused it to fail.  Can you post the code you are using to
>>encode the image?
>>
>>
>>
>>
>>>GVS
>>>
>>>-----Original Message-----
>>>From: GVS Srinivas 
>>>Sent: Wednesday, October 22, 2003 3:55 PM
>>>To: 'Batik Users'
>>>Subject: RE: outofmemory error in batik transcoder
>>>
>>>
>>>i saw this snippet of code
>>>
>>>================================================
>>>	OutputStream out = new FileOutputStream(fileName);
>>>	TIFFEncodeParam param = new TIFFEncodeParam();
>>>	param.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2);
>>>	ImageEncoder encoder = ImageCodec.createImageEncoder("TIFF", out,
>>>param);
>>>	encoder.encode(firstImage);
>>>	out.close();
>>>=================================================
>>>but in the above code i see that encode mathod of the encoder takes the
>>>image.
>>>i am invoking the TiledImageTranscoder to raster a tiff image.can i, on
>>
>>the
>>
>>
>>>fly give the tiff image as the input to the image encoder so that it
>>
>>encodes
>>
>>
>>>in the JPEG format.i dont want to create a tiff image first on the disk
>>
>>and
>>
>>
>>>then access the image to encode it to the jpeg.please suggest me
>>>thanks a lot again.
>>>GVS
>>>
>>>
>>>-----Original Message-----
>>>From: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
>>>Sent: Wednesday, October 22, 2003 12:56 PM
>>>To: Batik Users
>>>Subject: Re: outofmemory error in batik transcoder
>>>
>>>
>>>GVS Srinivas wrote:
>>>
>>>
>>>
>>>
>>>>thanks for the input thomas,
>>>>i think saving image of size 400 mb of an image cant be afforded by us.
>>>
>>>
>>>  Well, you might try using one of the supported forms of compressed
>>
>>Tiff.
>>
>>
>>>This includes JPEG Compression. The second argument to the
>>
>>TIFFImageEncoder
>>
>>
>>>is a TIFFEncodeParam object.  You can construct one and call:
>>>
>>>   param.setCompression(TIFFEncodeParam.COMPRESSION_JPEG_TTN2);
>>>
>>>  To turn on JPEG compression of the image data (the file is still a Tiff
>>>file).
>>>The encoder also supports, COMPRESSION_PACKBITS (a run length encoding),
>>
>>and
>>
>>
>>>COMPRESSION_DEFLATE ("gzip" compression).  To be honest I've never really
>>>tried
>>>either of these but the TIFF Encoder we use (from JAI) should support
>>
>>them.
>>
>>
>>>  Also these are getting pretty far "off the beaten path" for Tiff files
>>
>>so
>>
>>
>>>what ever software you are using down stream may or may not be able to
>>
>>read
>>
>>
>>>them.
>>>
>>>
>>>
>>>
>>>>i tried the other option of increasing the memory of java while starting
>>>
>>>my
>>>
>>>
>>>
>>>>tomcat(Xmx512m ),i observed an improvement but still it seems to choke
> 
> the
> 
>>>>memory.Is there any plan of batik enhancing the JPEGTranscoder?.
>>>
>>>
>>>   I don't have any plans. The biggest problem is that the com.sun JPEG
>>>encoder
>>>which we use takes the entire image at one time (no tiled interface).  BTW
>>>for a 400MB image you will need to give it at least a Gig of memory as
>>>I know it needs to copy that image at least once for output (800MB).
>>>
>>>
>>>
>>>
>>>>thanks a lot for the support.
>>>>regds
>>>>GVS
>>>>
>>>>-----Original Message-----
>>>>From: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
>>>>Sent: Tuesday, October 21, 2003 7:31 PM
>>>>To: Batik Users
>>>>Subject: Re: outofmemory error in batik transcoder
>>>>
>>>>
>>>>GVS Srinivas wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>hi ,
>>>>>thanks for the info.
>>>>>i tried using TiledImageTranscoder 
>>>>>1. it was saying that the constrcutor is protected.
>>>>
>>>>
>>>>  The file has it's own main which was intended to construct the
>>>>Transcoder, but I don't think there is much of a problem making it
>>>>public for use in a larger application.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>2.i made the constructor public and tried instantiating i tried in the
>>>>>following way
>>>>>====================================
>>>>>		FileOutputStream fos = new FileOutputStream("d:\\gvs.tiff");
>>>>>         TiledImageTranscoder tit = new TiledImageTranscoder();
>>>>>         tit.addTranscodingHint(KEY_WIDTH, new Float(10240));
>>>>>         tit.transcode(new TranscoderInput("file:" + "d:\\test.svg"),

>>>>>                       new TranscoderOutput(fos));
>>>>>====================================
>>>>>it was creating a file as large as 400MB.i am not sure where iam
>>
>>commiting
>>
>>
>>>>>some mistake.please help me out.
>>>>
>>>>
>>>>  I don't think there is a mistake, the Tiff file is uncompressed,
>>>>so assuming a mostly square document:  4*10,000*10,000 = 400,000,000
> 
> bytes
> 
>>>=
>>>
>>>
>>>
>>>>400MB.
>>>>(That is 4 bytes per pixel * 10,000 pixels across * 10,000 pixels down).
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>thanks
>>>>>GVS
>>>>>
>>>>>-----Original Message-----
>>>>>From: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com]
>>>>>Sent: Tuesday, October 21, 2003 3:52 PM
>>>>>To: Batik Users
>>>>>Subject: Re: outofmemory error in batik transcoder
>>>>>
>>>>>
>>>>>Felicia Ionascu wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>Hi,
>>>>>>I had the same problem several months ago, you can use the 
>>>>>>TiledImageTranscoder instead of your JPEG transcoder, of course you
> 
> need
> 
>>
>>>>>>to change "TIF" to "JPEG" in the code. This transcoder doesn't use

>>>>>>BufferedImages but RenderedImages, so it decreases dramatically the

>>>>>>memory consumption.
>>>>>>The source is in the "contrib" area of the CVS, thanks to Thomas.
>>>>>
>>>>>
>>>>>Actually, you can't just replace TIFF with JPEG in the code because
>>>>>there is no JPEG encoder capable of taking a rendered image and
>>>>
>>>>transcoding
>>>>
>>>>
>>>>
>>>>
>>>>>it to a JPEG file (Actually I think javax.imageio may have one but we
>>>>>are currently based on JDK 1.3 so in that context we don't have it).
>>>>>
>>>>>But it is true that if you can switch to using TIFF then the tiled
>>>>>transcoder
>>>>>is _much_ better for very large images.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>Felicia
>>>>>>
>>>>>>
>>>>>>
>>>>>>GVS Srinivas wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>hi  all ,
>>>>>>>i am  trying to transform a large svg into an jpg image using
batik
>>
>>jpeg
>>
>>
>>>>>>>transcoder and i am encoutering with outofmemoryerror.
>>>>>>>when the transcode method is called from the jpegtranscoder.
>>>>>>>
>>>>>
>>>>>
> 1.jpegtrascoder---------->>>>>2.imagetranscoder.transcode()----------->>>>3.
> 
> Staticrenderer.repaint()----------->>>>>>4.Staticrenderer.updateWorkingBuffe
> 
>>>>>>>rs()------>>>>5. Raster.createWritableRaster().after
this i am geting
>>>
>>>the
>>>
>>>
>>>
>>>>>>>outofmemoryerror.
>>>>>>>when i debug the code actual wrror is coming in the in databufferInt

>>>>>>>class.
>>>>>>>
>>>>>>>would you please send me the code for correcting this problem
in the 
>>>>>>>batik
>>>>>>>thanks a lot
>>>>>>>GVS
>>>>>>>
>>>>>>>---------------------------------------------------------------------
>>>>>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>>>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>---------------------------------------------------------------------
>>>>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>---------------------------------------------------------------------
>>>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>>>
>>>>>
>>>>>_____________________________________________________________________
>>>>>This e-mail has been scanned for viruses by MCI's Internet Managed
>>>>
>>>>Scanning
>>>>
>>>>
>>>>
>>>>
>>>>>Services - powered by MessageLabs. For further information visit
>>>>>http://www.mci.com
>>>>>
>>>>>---------------------------------------------------------------------
>>>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>---------------------------------------------------------------------
>>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>>
>>>>
>>>>_____________________________________________________________________
>>>>This e-mail has been scanned for viruses by MCI's Internet Managed
>>>
>>>Scanning
>>>
>>>
>>>
>>>>Services - powered by MessageLabs. For further information visit
>>>>http://www.mci.com
>>>>
>>>>---------------------------------------------------------------------
>>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>>
>>>
>>>
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>
>>>
>>>_____________________________________________________________________
>>>This e-mail has been scanned for viruses by MCI's Internet Managed
>>
>>Scanning
>>
>>
>>>Services - powered by MessageLabs. For further information visit
>>>http://www.mci.com
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>
>>>
>>
>>
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>
>>
>>_____________________________________________________________________
>>This e-mail has been scanned for viruses by MCI's Internet Managed
> 
> Scanning
> 
>>Services - powered by MessageLabs. For further information visit
>>http://www.mci.com
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
> 
> 
> _____________________________________________________________________
> This e-mail has been scanned for viruses by MCI's Internet Managed Scanning
> Services - powered by MessageLabs. For further information visit
> http://www.mci.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
> 




---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org


Mime
View raw message