xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GVS Srinivas <GVS.Srini...@cramer.co.uk>
Subject RE: outofmemory error in batik transcoder
Date Thu, 23 Oct 2003 12:37:09 GMT
hi,
thanks a lot .i will try that now.but what is "img" and "sm" in
(GraphicsUtil.wrap(img), sm)
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


Mime
View raw message