Avatar billede repsak Nybegynder
05. oktober 2003 - 11:35 Der er 13 kommentarer og
1 løsning

Gemme et bufferedImage på HD

Jeg har et bufferedimage, hvor jeg skal ændre alle gennemsigtige pixels til hvide... Det gør jeg vha en dobbelt for-løkke og system.out.println viser at det går som forventet. Problemet er bare at når mit program lukker så er der ikke foretaget ændringer i billedet (når jeg åbner i billedprogram)
Hvordan gemmer jeg mine ændringer fysisk til disken?
Avatar billede soreno Praktikant
05. oktober 2003 - 11:48 #1
Måske sådan:

import javax.imageio.*;

ImageIO.write(myBufferedImage, "gif", new File("test.gif"));
Avatar billede soreno Praktikant
05. oktober 2003 - 11:51 #2
Den skal nok ind i en try catch

try
{
  ImageIO.write(myBufferedImage, "gif", new File("test.gif"));
}
catch(Exception e)
{
  e.printStackTrace();
}
Avatar billede repsak Nybegynder
05. oktober 2003 - 11:59 #4
hmm den returnerer false:
"false if no appropriate writer is found."
Avatar billede soreno Praktikant
05. oktober 2003 - 12:03 #5
Så prøv lige at kør:

String[] formatNames = ImageIO.getReaderFormatNames();
for(int i=0;i<formatNames.length;i++)
{
  System.out.println(formatNames[i]);
}

"gif" var bare et gæt fra min side - det er ikke sikkert at gif er implementeret (pga. patentproblemer).
Avatar billede repsak Nybegynder
05. oktober 2003 - 12:06 #6
det giver:
jpeg
gif
png
JPG
jpg
JPEG
Avatar billede soreno Praktikant
05. oktober 2003 - 12:08 #7
Det kunne vel være at du bruger flere farver end gif understøtter (mener det er 7 bit). Prøv at skriv til en png.
Avatar billede repsak Nybegynder
05. oktober 2003 - 12:13 #8
same result :-(
den opretter blot en fil som fylder 0 bytes
nu test.gif og test.png
Avatar billede repsak Nybegynder
05. oktober 2003 - 12:14 #9
hey jo png virker (havde glemt at ændre param 2...)
understøtter png tranparency?
Avatar billede soreno Praktikant
05. oktober 2003 - 12:16 #10
Ja, det mener jeg - men jeg er langt fra grafiker.
Mener iøvrigt det hedder alpha channel når vi snakker png.

MSIE understøtter, af ukendte årsager, ikke transparente PNG - og har umiddelbart ikke tænkt sig at understøtte det.
Avatar billede soreno Praktikant
05. oktober 2003 - 12:18 #11
Jeg lavede iøvrigt lige dette eksempel:
import java.io.*;
import java.util.*;
import javax.imageio.*;
import java.awt.image.*;

public class Main
{
    public static void main(String args[])
    {
        int size = 256;
        BufferedImage image = new BufferedImage(size, size, BufferedImage.TYPE_INT_RGB);
        Random rnd = new Random();
       
        for(int i=0;i<size;i++)
        {
            for(int j=0;j<size;j++)
            {
                image.setRGB(i, j, i*j);
            }
        }

        try
        {
            ImageIO.write(image, "png", new File("test.gif"));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }       
    }
}


Outputtet ser faktisk spændende ud !

:-)
Avatar billede repsak Nybegynder
05. oktober 2003 - 12:18 #12
æv pis, for jeg står og skal bruge nogle andre giffer (eller nu png) til IE som skal indeholde "alpha channel"
Avatar billede repsak Nybegynder
05. oktober 2003 - 12:20 #13
hehe ja frækt lavet ;-)
Avatar billede soreno Praktikant
05. oktober 2003 - 12:21 #14
Der er workarounds:
http://www.koivi.com/ie-png-transparency/

Samt du kan evt. være med til at presse Microsoft:
http://www.petitiononline.com/msiepng/petition.html
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB