Avatar billede qumle Nybegynder
26. januar 2006 - 15:50 Der er 3 kommentarer

Konvertering af Billeder

Hej folkens

Jeg skal uploade en masse billeder til en server, jeg får en url til billedet og henter det så via en Stream og gemmer det på Serverens disk, dette fungerer uden problemer.

mit problem er at min application forventer jpg billeder, men billederne som jeg henter kan være i alle forskellige formater.

Har java et standard api til at konvertere fra f.eks gif(eller andet) til jpg, eller skal man så ud og have fat i et eller andet tredje parts produkt?
Avatar billede jakoba Nybegynder
26. januar 2006 - 16:12 #1
Ja.  http://java.sun.com/products/java-media/jai/forDevelopers/jai-apidocs/index.html
Har ihvertfald gif ot jpeg.
Det ser ud somom den muligvis koster penge.
Avatar billede qumle Nybegynder
13. februar 2006 - 10:20 #2
svarer du lige på denne.

den koster ikke penge og var rimelig nem at gå til.

Det var præcis hvad jeg havde brug for, efter en smule prototyping var det rimelig simpelt at implementere
Avatar billede qumle Nybegynder
13. februar 2006 - 10:21 #3
et lille kode eksempel hvis andre skulle få brug for noget lignende.

denne kode konverterer et hvilket som helst billede til jpg

public void convertTIFToJPEG() {

        String sourcefilename = inputField.getText();

        String targetfilename = sourcefilename.substring(0,sourcefilename.lastIndexOf("\\")+1)+sourcefilename.substring(sourcefilename.lastIndexOf(".")+1,sourcefilename.length()) + "_" + System.currentTimeMillis()+".jpg";
       
        File targetFile = new File(targetfilename);

        FileInputStream inputStream = null;
        FileOutputStream outputStream = null;

        String contentType = null;
        try {

            inputStream = new FileInputStream(sourcefilename);
            File sourceFile = new File(sourcefilename);
            contentType = sourceFile.toURL().openConnection()
                    .getContentType();
            if(sourcefilename.endsWith("bmp")){
                //Hack to make bmp work
                contentType = "image/bmp";
            }
           
            if (contentType == null || !contentType.startsWith("image")) {

                // not an image

            } else {               
               
                contentType = contentType.replaceAll("image/","");
               
                outputStream = new FileOutputStream(targetFile);

               
                ImageDecodeParam decodeParam = null;
                TIFFDecodeParam decodeParam2 = null;
               
                if(contentType.equals("tiff")){
                    decodeParam2 = new TIFFDecodeParam();
                    decodeParam = decodeParam2;
                }
               
                ImageDecoder dec = ImageCodec.createImageDecoder(contentType,
                        inputStream, decodeParam);
               
               
                RenderedImage image = null;
                try{
                image = dec.decodeAsRenderedImage(0);
                }catch(IllegalArgumentException illEx){
                   
                String msg = illEx.getMessage();
                }
                ImageEncoder enc = ImageCodec.createImageEncoder("JPEG",
                        outputStream, null);

                enc.encode(image);

            }

        } catch (IOException e) {
            e.printStackTrace();
            System.exit(0);
        } finally {
            try {
                inputStream.close();

                outputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
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