Toon posts:

[Java] bmp bestand inlezen

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik zou een zwart wit bmp bestand onder Java moeten inlezen, vervolgens moet er een 2D-array gemaakt worden, deze array moet evenveel pixels (breedte en hoogte) als de BMP hebben
in deze array moet per pixel de waarde worden opgenomen van de kleur (dus 255 indien zwart, en 0 indien wit), is dit mogelijk?
eventueel met wat eigen programmeerwerk
ik zou dus graag weten hoe ik een bmp-bestand kan inlezen, en ook hoe ik een pixelwarde naar een int kan omzetten

GruBen

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik zou eigenlijk niet zelf een BMP bestand gaan inlezen. Je kan beter de standaard voorzieningen gebruiken en werken een BufferedImage.

Allerlei info kan je hier vinden:

http://java.sun.com/docs/books/tutorial/2d/images/filtering.html
http://java.sun.com/products/jdk/1.2/docs/guide/2d/spec/j2d-image.fm8.html

En vooral hier:
http://java.sun.com/products/jdk/1.2/docs/guide/2d/spec/j2d-image.fm.html

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Ik doe het altijd op de volgende manier. Gebruik van PixelGrabber zet het in een int-array.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  private int[] getImage(String imageName) {
    MediaTracker mt = new MediaTracker(this);
    Image image = getImage(getDocumentBase(),imageName);
    mt.addImage(image,0);
    try {
    mt.waitForAll();
    } catch(InterruptedException ex) {}
    if(mt.isErrorAny()) {
    System.out.println("error while loading: "+imageName);
    return null;
    }
    int w = image.getWidth(this);
    int h = image.getHeight(this);
    int buffer[] = new int [w * h];
    PixelGrabber grabber = new PixelGrabber(image, 0, 0, w, h, buffer, 0, w);
    try {
    grabber.grabPixels();
    } catch(InterruptedException ie) { }
    return buffer;
  }

Image naar int[] laden :)

Verwijderd

Topicstarter
Hallo,

deze topic is al wel even oud, maar ik ben er volop mee bezig nu, en het lukt aardig

nu vraag ik mij af...
met die pixelgrabber krijg ik een int array waar alle pixelwaarden in komen te staan,
ideaal hier kan ik zodoende bewerkingen op uitvoeren,
nu is er nog een probleem, hoe kan ik van deze array terug een image maken
ik dacht dit te doen via een ImageIcon, hierbij kan men bij de constructor een array meegeven, maar dit is een byte array, dus da zal niet lukken

iemand een idee

GruBen

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

misschien een beetje oude koek waar iets beters voor in de plaats is gekomen (ik hou de jdk niet zo bij :)), maar kijk eens naar de klasse MemoryImageSource

die doet precies wat jij wilt :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
idd, dat ziet er een goede klasse uit voor die doeleinden,

maar is het mogelijk om van MemoryImageSource ook een ImageObject nog aan te maken dan?

GruBen

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

daar heb je ImageProducer voor nodig. (java.awt.ImageProducer) als je het niet helemaal snapt, neem dan een kijkje naar tinyptc van gaffer (http://www.gaffer.org)
Pagina: 1