Forum » Programiranje » JAVA neujemanje tipov
JAVA neujemanje tipov
l0g1t3ch ::
imam tole metodo
public Image loadImage(String path)
{
BufferedImage tmp = null;
try
{
tmp = ImageIO.read(new File(path));
}
catch (IOException e)
{
System.err.println("Napaka pri branju slike");
}
return tmp;
}
in jo takole kličem
BufferedImage img = null;
img = loadImage("c:\\test.jpg");
pa zadeva ne dela, če pa dam tkole
img = (BufferedImage)loadImage("c:\\test.jpg");
pa dela normalno
Zanima me zakaj morm tm castat v BufferedImage če pa tak tip že vračam. Se mi zdi d ga Java mal serje
public Image loadImage(String path)
{
BufferedImage tmp = null;
try
{
tmp = ImageIO.read(new File(path));
}
catch (IOException e)
{
System.err.println("Napaka pri branju slike");
}
return tmp;
}
in jo takole kličem
BufferedImage img = null;
img = loadImage("c:\\test.jpg");
pa zadeva ne dela, če pa dam tkole
img = (BufferedImage)loadImage("c:\\test.jpg");
pa dela normalno
Zanima me zakaj morm tm castat v BufferedImage če pa tak tip že vračam. Se mi zdi d ga Java mal serje
- spremenilo: l0g1t3ch ()
Sergio ::
ImageIO.read() vraca objekt tipa Image, in ne objekta tipa BufferedImage. Ker ves da bos uporabljal BufferedImage, je potreben se eksplicitni type cast.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
l0g1t3ch ::
Samo zakaj saj itak rezultat metode že priredim prej neki spremenljivki, ki je BufferedImage in pol to vrnem
overlord_tm ::
public Image loadImage(String path)
daj tole v public BufferedImage loadImage(String path)
Tam v glavi metode je določen kak tip vračaš. Meni je zanimivo že to da v metodi ki vrne Image dovoli v return stavek dat BufferedImage
daj tole v public BufferedImage loadImage(String path)
Tam v glavi metode je določen kak tip vračaš. Meni je zanimivo že to da v metodi ki vrne Image dovoli v return stavek dat BufferedImage
l0g1t3ch ::
sm opazu kako neumnost sm naredu
A je kdo drugace kaj delu z pixelGraber razredom iz Jave. Meni nikakor ne uspe dobiti tabele pixlov iz slike še manj pa zapisati to potem nazaj v sliko. Če kdo zna bi prosu za pomoč
A je kdo drugace kaj delu z pixelGraber razredom iz Jave. Meni nikakor ne uspe dobiti tabele pixlov iz slike še manj pa zapisati to potem nazaj v sliko. Če kdo zna bi prosu za pomoč
l0g1t3ch ::
moja koda, ki enostavno naloži neko sliko in jo prikaže. Zanima me pa zakaj ne dela metoda getPixels. Sej neki naredi amapk v polje kamor shrani so vse vrednosti nekam čudne. Povečino so -1 ponekod pa drugo negativno število.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org2;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.PixelGrabber;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Main
{
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
ImgProc frame = new ImgProc();
}
}
class ImgProc extends JFrame
{
BufferedImage img = null;
int[] Pixels = null;
public ImgProc()
{
setSize( 1000, 1000 );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.white);
setTitle( "Image Processing" );
img = getImage("C:\\test.bmp");
getPixels(img);
setVisible(true);
}
public void getPixels( BufferedImage img )
{
PixelGrabber pg = new PixelGrabber(img, 0, 0,100, 100, false);
Pixels = new int[ pg.getWidth() * pg.getHeight() ];
try
{
pg.grabPixels();
}
catch (Exception e)
{
System.err.println("napaka v PixelGrabber-ju");
}
Pixels = (int[])pg.getPixels();
}
public BufferedImage getImage(String path)
{
BufferedImage tmp = null;
try
{
tmp = ImageIO.read(new File(path));
}
catch (IOException ioe)
{
System.err.println("Ne morem prebrati slike");
}
return tmp;
}
public void paint( Graphics g )
{
g.drawImage(img, 0, 0, null);
}
}
morbo ::
public Object getPixels()
"Get the pixel buffer. If the PixelGrabber was not constructed with an explicit pixel buffer to hold the pixels then this method will return null until the size and format of the image data is known."
Torej PixelGrabber ustvari s konstruktorjem ki ti omogoča da podaš svoj buffer.
BufferedImage posreduje vse metode razreda Image, torej je takšen pristop povsem varen (in predvsem uporaben za generiko).
"Get the pixel buffer. If the PixelGrabber was not constructed with an explicit pixel buffer to hold the pixels then this method will return null until the size and format of the image data is known."
Torej PixelGrabber ustvari s konstruktorjem ki ti omogoča da podaš svoj buffer.
Meni je zanimivo že to da v metodi ki vrne Image dovoli v return stavek dat BufferedImage
BufferedImage posreduje vse metode razreda Image, torej je takšen pristop povsem varen (in predvsem uporaben za generiko).
l0g1t3ch ::
Ne glede kaj probavam zmeri dobim vsaj zame kar ene vrednosti. Pol sm pa za foro poskusu to zapisat v eno sliko na disk in dejansko dobim samo nek zmazek. Če ima kdo kako delujočo kodo lepo prosim za primer kako se naredi.
morbo ::
Mogoče slika še ni popolnoma naložena takrat ko uporabiš paint()? Probaj uporabit java.awt.MediaTracker
Kaj točno pa sploh delaš s temi piksli? Namesto PixelGrabberja lahko uporabiš Raster in iz njega dobiš buffer pikslov. Tako:
Kaj točno pa sploh delaš s temi piksli? Namesto PixelGrabberja lahko uporabiš Raster in iz njega dobiš buffer pikslov. Tako:
int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();potem s poljem nekaj narediš, in ga zapišeš nazaj z:
image.getRaster().setDataElements(0, 0, w, h, pixels);kjer sta w in h širina in višina slike
l0g1t3ch ::
Rabim za obdelavo slik z raznimi filtri. Sej vem d ma java to že vgrajene te filtre sam mormo nardit sami. Pa mi filtri sami ne delajo nobenga problema samo zajem slike pa :D
Filtri so pa glajenje, ostrenje, iskanje robov in tko naprej
Filtri so pa glajenje, ostrenje, iskanje robov in tko naprej
l0g1t3ch ::
Sm si pogledu java2D pa ni tm nic uporabnega oz nicesar kar se tice grebanja pixlov.
Sm pa probu tudi tvojo drugo kodo in isto ne dela
Pocasi bom popizdu . Bistvo naloge, tiste filtrem sm naredu 1,2,3. Zajem slike ko naj bi bil rutinski mi pa v 3h dneh ni ratal
Sm pa probu tudi tvojo drugo kodo in isto ne dela
Pocasi bom popizdu . Bistvo naloge, tiste filtrem sm naredu 1,2,3. Zajem slike ko naj bi bil rutinski mi pa v 3h dneh ni ratal
morbo ::
Kako veš da si filtre naredil, če ti ni uspelo 'zajeti slike'?
Tole 100% dela:
Tole 100% dela:
BufferedImage img = new BufferedImage(4, 4, BufferedImage.TYPE_INT_ARGB); // shrani raster v polje int[] pixels = ((DataBufferInt) img.getRaster().getDataBuffer()).getData(); // zgornjemu levemu pikslu nastavi barvo na polprosojno rdeco (vsak int v polju je en // piksel predstavljen z osmimi biti za vsak kanal ARGB) pixels[0] = (128 << 24) | (255 << 16) | (0 << 8) | (0 << 0); // prepise raster z novimi podatki img.getRaster().setDataElements(0, 0, 4, 4, pixels); // zapise sliko na disk ImageIO.write(img, "png", new File("/home/user/test.png"));
Zgodovina sprememb…
- spremenil: morbo ()
l0g1t3ch ::
Naredu sm tkole :d
S pythonom sm prebral sliko jo zapisu v matriko, to matriko hranu v txt fajl pa ga v javi prebral in spet dobu matriko ki sm jo nucu :d
S pythonom sm prebral sliko jo zapisu v matriko, to matriko hranu v txt fajl pa ga v javi prebral in spet dobu matriko ki sm jo nucu :d
l0g1t3ch ::
Zakaj je v teli vrstici treba indeksa dati kot (j, i) in ne kot (i,j) kot bi človek pričakoval
pixel = image.getRGB(j, i) ;
Se pravi ne pobiramo pixlov (0,0) (0,1) (0,2) in tako naprej ampak (0,0) (1,0) (2,0)
P.S. dodajanje kode v topic je ZANEČ !
pixel = image.getRGB(j, i) ;
Se pravi ne pobiramo pixlov (0,0) (0,1) (0,2) in tako naprej ampak (0,0) (1,0) (2,0)
P.S. dodajanje kode v topic je ZANEČ !
Zgodovina sprememb…
- spremenilo: l0g1t3ch ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | kako narediti program ki bere drugi programOddelek: Programiranje | 5747 (4060) | imagodei |
» | [Netbeans-Java]Embossing,blurring,sharpeningOddelek: Programiranje | 1134 (1036) | t3hn0 |
» | [Java] pošiljanje slik prek portaOddelek: Programiranje | 1203 (1122) | xlarge |
» | [java] branje TGAOddelek: Programiranje | 1410 (1281) | kopernik |
» | [java] transparentnostOddelek: Programiranje | 1225 (999) | jpzoky1 |