Avatar billede stig69 Nybegynder
17. oktober 2001 - 11:14 Der er 11 kommentarer og
1 løsning

import af billedfil

Jeg er igang med et lille program der skal kunne indlæse et jpg billede og beregne dets histogram.

Jeg er allerede låst fast i første del mht. at indlæse en billedfil.

Er der nogle der kan komme med links til hvor jeg kan læse mere eller endnu bedre: eksempler
Avatar billede disky Nybegynder
17. oktober 2001 - 11:20 #1
Hvis det er i en Applet findes der en metode i Applet klassen der hedder getImage(URL)

Den bruger du bare, den returnerer en Image hvor billedet er i.
Avatar billede stig69 Nybegynder
17. oktober 2001 - 11:21 #2
Det havde jeg glemt at skrive. Det skal ikke benyttes i en Applet. Jeg skal bare læse en lille billedfil ind. Lave lidt beregning osv.
Avatar billede disky Nybegynder
17. oktober 2001 - 11:29 #3
kig på

java.awt.Toolkit

Den har en createImage(URL) metode som du kan bruge.

Jeg kan give dig et eksempel efter middag.
Avatar billede stig69 Nybegynder
17. oktober 2001 - 12:01 #4
jo tak. Jeg har kigget lidt på det du sendte. Jeg er ikke klar over om det helt opfylder mine ønskner. Helt præcist skal jeg have indlæst et RGB billede i et array(3x256. På plads nul skal jeg have stående hvor pixel der er i Rød med værdien 0, på plads et, hvormange pixels med værdien 1 .... på plads 256 skal jeg have stående hvormange pixel der er i Grøn med værdien nul osv...) og eksportere det til en database.

Kan du fortælle mig om creatImage eller getImage gør det?
Avatar billede disky Nybegynder
17. oktober 2001 - 12:01 #5
Denne her

          Frame fr = new Frame();
            MediaTracker aTracker = new MediaTracker(fr);
            bitmap = (Toolkit.getDefaultToolkit()).getImage(\"billed.jpg\");
            aTracker.addImage(bitmap, 0);



Loader en billed.jpg ind i en BitMap som du så kan bearbejde.
Avatar billede stig69 Nybegynder
17. oktober 2001 - 13:01 #6
Har du kendskab til Java Advanced Imaging 1.1.1
http://java.sun.com/products/java-media/jai/iio.html ?
Avatar billede disky Nybegynder
17. oktober 2001 - 13:05 #7
desværre ikke, men den ser ud som om den også kan bruges.

Det eksempel jeg gav lige før bruger jeg selv i en gif->privat format konverter.
Avatar billede stig69 Nybegynder
17. oktober 2001 - 13:49 #8
JEg har nogle enkelte spørgsmål til de linier du gav mig.

Dit Frame objekt. Hvad er det?
Mediatracker??
bitmap, hvilken variabel er det?
Avatar billede disky Nybegynder
17. oktober 2001 - 13:50 #9
du får lige hele filen.


import java.io.*;
import java.util.zip.*;
import java.awt.*;
import java.awt.image.*;

public class fontser

{
    /**
    * Dummy Constructor.
    */
    public void fontser()
    {
    }

    /**
    * Main.
    */
    public static void main(String[] args)
    {
        /*-- Font info --*/
        int width = 16;
        int height = 20;
        int yspacing = 0;
        //      String index = \"%!|#$+ \'()* ,-./0123456789:;[=]?%ABCDEFGHIJKLMNOPQRSTUVWXYZ&\";
        String index = \"0123456789 \";

        byte[] compressed = null;
        Image bitmap = null;
        int[]    data = null;
        int imageW = -1;
        int imageH = -1;

        if (args.length < 2)
        {
            usage();
        }
        else
        {
            /*-- Load bitmap --*/
            Frame fr = new Frame();
            MediaTracker aTracker = new MediaTracker(fr);
            bitmap = (Toolkit.getDefaultToolkit()).getImage(args[0]);
            aTracker.addImage(bitmap, 0);
            try
            {
                aTracker.waitForID(0);
            }
            catch (Exception e)
            {
                System.err.println(\"Cannot load bitmap !\");
            }

            if (aTracker.isErrorAny())
            {
                System.err.println(\"Cannot load bitmap !\");
            }

            /*-- We grab the letter in the font image and put it in a pixel array --*/
            imageW = bitmap.getWidth(fr);
            imageH = bitmap.getHeight(fr);
            System.out.println(\"W = \"+imageW+\" H= \"+imageH);
            data = new int[imageW*imageH];
            PixelGrabber pg = new PixelGrabber(bitmap, 0, 0, imageW, imageH, data, 0, imageW);
           
            try
            {
                pg.grabPixels();
            }  catch (InterruptedException e)

            {
                System.err.println(\"Cannot grab bitmap !\");
            }

            byte[] byteArray = new byte[data.length*4];

            try
            {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                GZIPOutputStream gzos = new GZIPOutputStream((OutputStream)baos);
                int p = 0;
                for (int m=0;m<data.length;m++)
                {
                    int tmp  = data[m];
                    byteArray[p++] = (byte) ((tmp>>24)&0x000000FF);
                    byteArray[p++] = (byte) ((tmp>>16)&0x000000FF);
                    byteArray[p++] = (byte) ((tmp>>8)&0x000000FF);
                    byteArray[p++] = (byte) (tmp&0x000000FF);
                }
                gzos.write(byteArray,0,byteArray.length);
                gzos.flush();
                gzos.close();
                compressed = baos.toByteArray();
                baos.close();
            }
            catch (Exception e)
            {
                System.err.println(\"Compression Error : \"+e.getMessage());
            }

            FileOutputStream fos = null;
            ObjectOutputStream oos = null;
            try
            {
                fos = new FileOutputStream(args[1]);
                oos = new ObjectOutputStream(fos);
                oos.writeObject(new fontinfo(width, height, yspacing, index, args[1],compressed,imageW,imageH));
                oos.flush();
            }
            catch (InvalidClassException  ice)
            {
                System.err.println(\"Serialization Class Error : \"+ice.getMessage());
            }
            catch (NotSerializableException  nse)
            {
                System.err.println(\"Serialization Error : \"+nse.getMessage());
            }
            catch (IOException ioe)
            {
                System.err.println(\"IO Error : \"+ioe.getMessage());
            }
            catch (SecurityException se)
            {
                System.err.println(\"Security Error : \"+se.getMessage());
            }
            finally
            {
                try
                {
                    oos.close();
                    fos.close();
                }
                catch (IOException ioex)
                {
                    System.err.println(\"IO closing Error : \"+ioex.getMessage());
                }
            }
            System.out.println(\"OK\");
        }
        System.exit(0);
    }

    public static void usage()
    {
        System.err.println(\"Usage : fontser <filename>\\n\");
    }
}
Avatar billede stig69 Nybegynder
17. oktober 2001 - 14:01 #10
Kan du fortælle mig kort hvad din klasse gør
Avatar billede disky Nybegynder
17. oktober 2001 - 14:03 #11
den loader en fil man angiver.

Denne fil er en graphics præsentation af et alfabet + tal.

Denne fil bliver så konverteret til et andet hjemmelavet format.

Jeg har brugt det til at lave en counter med.


Den del du har brug for er:
{
            /*-- Load bitmap --*/
            Frame fr = new Frame();
            MediaTracker aTracker = new MediaTracker(fr);
            bitmap = (Toolkit.getDefaultToolkit()).getImage(args[0]);
            aTracker.addImage(bitmap, 0);
            try
            {
                aTracker.waitForID(0);
            }
            catch (Exception e)
            {
                System.err.println(\"Cannot load bitmap !\");
            }

            if (aTracker.isErrorAny())
            {
                System.err.println(\"Cannot load bitmap !\");
            }

           

Og så definitionen af variabler osv.
Avatar billede stig69 Nybegynder
19. oktober 2001 - 12:38 #12
Jeg skulle lige sidde og bakse lidt med det. Tak for hjælpen. Håber du når førstepladsen på Java ranglisten *s*
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