Clowns to the left of me, Jokers to the right
Als je het plaatje inleest krijg je een Image of een ImageIcon en volgens mij kan je daar wel bij de pixels komen.
Verwijderd
http://www.xs4all.nl/~perseus/bgdraw/bgdraw.html (in action)
http://www.xs4all.nl/~perseus/bgdraw/bgdraw.java (sourcecode)
http://www.xs4all.nl/~perseus/bgdraw/ (voor alle files)
of nog kleiner example:
http://www.xs4all.nl/~perseus/zoom/ (alle files, source)
Download de source van ondergetekende en bekijk hoe de images in arrays worden geladen, die worden bewerkt en weer worden omgezet naar een plaatje dat wordt getoond.
http://www.xs4all.nl/~perseus/bgdraw/bgdraw.java (sourcecode)
http://www.xs4all.nl/~perseus/bgdraw/ (voor alle files)
of nog kleiner example:
http://www.xs4all.nl/~perseus/zoom/ (alle files, source)
Download de source van ondergetekende en bekijk hoe de images in arrays worden geladen, die worden bewerkt en weer worden omgezet naar een plaatje dat wordt getoond.
Verder zou je eventueel ook op een JCanvas ofzo kunnen kliederen.
mja die PixelGrabber ziet er wel handig uit (source file uit Otis zijn post), maar die leest alle pixelwaarden in een 1-dimensionale array en daar ben ik niet veel mee spijtig genoeg. Mijn bedoeling is om alle pixels in te lezen in een 2-dimensionale array zodanig dat ik direct een stuk uit de foto kan snijden en bewerken...
Clowns to the left of me, Jokers to the right
Daarvoor moet je even kijken bij een Image of ImageIcon. ik geloof dat je daar zowel kan lezen als schrijven, maar verder heb ik hier zelf nog nooit iets mee gedaan.
Verwijderd
een 1 dimensionaal array A[width x height] is ook te zien als A[width][height]: als je pixel (100,50) (X,Y) wilt, doe je (0,0 based) A[50 x Width + 100]. Wil je een stukje snijden uit een plaatje, dan moet je even rekenen met de width van je cutout en de delta die je overhoudt om bij de volgende row te komen van je cutout.Kapoen schreef op 12 augustus 2002 @ 11:25:
mja die PixelGrabber ziet er wel handig uit (source file uit Otis zijn post), maar die leest alle pixelwaarden in een 1-dimensionale array en daar ben ik niet veel mee spijtig genoeg. Mijn bedoeling is om alle pixels in te lezen in een 2-dimensionale array zodanig dat ik direct een stuk uit de foto kan snijden en bewerken...
klopt 
volgend probleempje, die source code is een applet...en die pixelgrabber heeft absoluut een Image nodig om te werken.
In een applet kan je een Image inladen met een getImage (getDocumentBase(),...) statement, maarrrr ik ben een applicatie aan het schrijven en dit statement werkt dus niet.
Normaal gezien zou ik een ImageIcon kunnen gebruiken maar dan gaat PixelGrabber weer ff lastig doen
Iemand een idee hoe je toch een Image kan inlezen in een applicatie? (ik heb al gekeken op de java api site maar ik vind geen goed statement om dit te bereiken...)
volgend probleempje, die source code is een applet...en die pixelgrabber heeft absoluut een Image nodig om te werken.
In een applet kan je een Image inladen met een getImage (getDocumentBase(),...) statement, maarrrr ik ben een applicatie aan het schrijven en dit statement werkt dus niet.
Normaal gezien zou ik een ImageIcon kunnen gebruiken maar dan gaat PixelGrabber weer ff lastig doen
Iemand een idee hoe je toch een Image kan inlezen in een applicatie? (ik heb al gekeken op de java api site maar ik vind geen goed statement om dit te bereiken...)
Clowns to the left of me, Jokers to the right
Ik doe het meestal zo:
En ik zet die resources gewoon in mijn jar file.
code:
1
2
3
| static private ImageIcon icon = new ImageIcon(
Editor.class.getClassLoader().getResource("com/jph/..../Caution.png")
); |
En ik zet die resources gewoon in mijn jar file.
natuurlijk, zo zou ik het ook doen, maar zoals ik al zei: PixelGrabber werkt niet met ImageIcons
Clowns to the left of me, Jokers to the right
kan misschien ff PixelGrabber extenden en mijn eigen versie maken 
anyways, het inlezen van een foto gaat al maar de uitvoer is nog verkeerd... ik krijg een of andere rare string ipv een gevulde array
wat doe ik hier fout?
anyways, het inlezen van een foto gaat al maar de uitvoer is nog verkeerd... ik krijg een of andere rare string ipv een gevulde array
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| public Convolutie(Image foto) {
kopie = new ImageIcon();
this.foto = foto;
//this.masker = masker;
kopie.setImage(foto);
hoogte = getSize(kopie).height;
breedte = getSize(kopie).width;
pixelwaarden = new int[hoogte*breedte];
}
public void laadPixelsIn() {
laadPixels = new PixelGrabber(foto.getSource(),0,0,breedte,hoogte,pixelwaarden,0,breedte);
}
public int[] geefTabel() {
return pixelwaarden;
}
private Dimension getSize(ImageIcon i) {
return new Dimension(i.getIconWidth(),i.getIconHeight());
} |
wat doe ik hier fout?
Clowns to the left of me, Jokers to the right
Java heeft al enige ingebouwde ondersteuning om imagemanipulatie te doen. Kijk eens naar http://www.javaworld.com/...-09-1998/jw-09-media.html
Verder moet je in jouw code nog laadPixels.grabPixels() aanroepen vooraleer de pixels werkelijk ingelezen worden. Hou je er ook rekening mee dat het inladen van een image een tijdje duurt en dat je dan natuurlijk best geen methodes gaat aanroepen. Hiervoor moet je gebruik maken van een MediaTracker.
Ik ben toevallig ook bezig met images en pixels in Java en ik heb in een klasse (onder andere) het volgende staan:
Verder moet je zeker eens de API docs uitpluizen; daar staat heel wat informatie in.
Verder moet je in jouw code nog laadPixels.grabPixels() aanroepen vooraleer de pixels werkelijk ingelezen worden. Hou je er ook rekening mee dat het inladen van een image een tijdje duurt en dat je dan natuurlijk best geen methodes gaat aanroepen. Hiervoor moet je gebruik maken van een MediaTracker.
Ik ben toevallig ook bezig met images en pixels in Java en ik heb in een klasse (onder andere) het volgende staan:
code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
| public class DCImage {
public DCImage(MediaTracker mt, String filename, int id) {
mFilename = filename;
mMt = mt;
mId = id;
mImage = Toolkit.getDefaultToolkit().getImage(mFilename);
mMt.addImage(mImage,mId);
}
private int[] loadAndGrab() throws DCImageErrorException {
// wait for the image to be loaded
try {
mMt.waitForID(mId);
}
catch (InterruptedException ie) {
throw new DCImageErrorException("Loading of image "+mFilename+
" was unexpectedly interrupted.");
}
// grab the pixels of the image
int imWidth = mImage.getWidth(null);
int imHeight = mImage.getHeight(null);
int nbPixels = imWidth * imHeight;
int[] pixels = new int[nbPixels]; // in RGB color space
PixelGrabber pg = new PixelGrabber(mImage,0,0,imWidth,imHeight,pixels,0,imWidth);
try {
if (!pg.grabPixels()) {
throw new DCImageErrorException("An error occurred while grabbing "+
"the pixels of "+mFilename+".");
}
}
catch (InterruptedException ie) {
throw new DCImageErrorException("Grabbing of the pixels of "+mFilename+
" was unexpectedly interrupted.");
}
return pixels;
}
} |
Verder moet je zeker eens de API docs uitpluizen; daar staat heel wat informatie in.
A polar bear is a rectangular bear after a coordinate transformation.
idd, java bezit heel wat mogelijkheden om aan image bewerking te doen...
maar ik wil het liever nog manueel houden omdat dit beter past in het kader van
mijn cursus wiskunde en beeldbewerking
anyways tnx for the info
maar ik wil het liever nog manueel houden omdat dit beter past in het kader van
mijn cursus wiskunde en beeldbewerking
anyways tnx for the info
Clowns to the left of me, Jokers to the right
Pagina: 1