Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (408)
games submitted by our members
Games in WIP (293)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Writing .jpg files  (Read 1512 times)
0 Members and 1 Guest are viewing this topic.
Offline fletchergames

Senior Member





« Posted 2006-11-09 05:11:21 »

I use the following line for writing Image files:

1  
2  
3  
4  
5  
6  
/**Saves the specified image to file.
 * @param image the Image to save
 * @param extension the extension of the file type to write
 * @param file the file to write to
 */

ImageIO.write(image, extension, file);


If the extension is png, it works fine.  If the extension is jpg, the file is discolored.  I realize that jpeg is a lossy format, but the resulting files are ridiculously discolored.  Is this a bug in ImageIO, or do I need to do something special?

I'm using version 1.5 update 9.
Offline oNyx

JGO Coder


Medals: 1


pixels! :x


« Reply #1 - Posted 2006-11-09 08:54:51 »

It should be 75 or 80% jpeg with 2x2 luminance cells. Depending on the image it should either look ok or well, shit (if there are few colors, hard edges, strong contrasts etc - png would have been a better choice then).

Feel free to post the images (png and jpeg).

There is also another way to write jpegs with some control about the compression. Cant remember how its done... never really wanted to write jpegs myself.

弾幕 ☆ @mahonnaiseblog
Offline BloodRain

Junior Member





« Reply #2 - Posted 2006-11-09 14:58:26 »

Try this :
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
class JPEGWriter
         {
   static float quality=0.9f; // <---THIS MIGHT BE YOUR PROBLEM
  public static void write(BufferedImage img,File filename)
               {
         try
            {
               FileOutputStream out=new FileOutputStream(filename);
               JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
               JPEGEncodeParam jep=encoder.getDefaultJPEGEncodeParam(img);
               jep.setQuality(quality,false);
               
               encoder.setJPEGEncodeParam(jep);
               encoder.encode(img);
               
             out.close();
            }
            catch(Exception e)
                     {
                     e.printStackTrace();  
                     }  
               }        
           
           
         }  

and use this like that :
1  
new JPEGWriter().write(imag,file);

imag is a BufferedImage and file is the file you want to create.
This should work...
Games published by our own members! Check 'em out!
Try the Free Demo of Revenge of the Titans
Offline fletchergames

Senior Member





« Reply #3 - Posted 2006-11-09 16:43:48 »

I tried the code in the JPEGWriter class, and the same thing happened.  I even tried setting the quality to 1.0f, but it made no difference.

I'm attaching the different images - one encoded as a .png and one encoded as a .jpg.
Offline oNyx

JGO Coder


Medals: 1


pixels! :x


« Reply #4 - Posted 2006-11-10 10:24:22 »

Hm. Looks totally garbled. Try copying it over to some opaque image before saving. No idea if that helps tho.

弾幕 ☆ @mahonnaiseblog
Offline fletchergames

Senior Member





« Reply #5 - Posted 2006-11-10 20:22:35 »

Copying the image to an opaque image first did the trick.  Using the contents of class JPEGWriter is unnecesary.
Offline campbell

Junior Member




Java games rock!


« Reply #6 - Posted 2006-11-13 07:10:53 »

Please read the evaluation of this bug report:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4836466

In short, it's a limitation in other native apps, not in Java.

Chris
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Browse for soundtracks for your game!

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (133 views)
2013-05-17 21:29:12

alaslipknot (142 views)
2013-05-16 21:24:48

gouessej (171 views)
2013-05-16 00:53:38

gouessej (166 views)
2013-05-16 00:17:58

theagentd (175 views)
2013-05-15 15:01:13

theagentd (160 views)
2013-05-15 15:00:54

StreetDoggy (204 views)
2013-05-14 15:56:26

kutucuk (228 views)
2013-05-12 17:10:36

kutucuk (228 views)
2013-05-12 15:36:09

UnluckyDevil (231 views)
2013-05-12 05:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!
Page created in 0.169 seconds with 20 queries.