Ahoj,
mám pár dotazů
dělám pořád na puzzle a nejjednoduší způsob se mě jeví průhledná komponenta
Zatím jsem se dostal na toto:
// inicializace obrázků
BufferedImage bimg = null;
BufferedImage bimg2 = null;
try {
// načtení obrázků
bimg = ImageIO.read(new File("c:\\LV.jpg"));
bimg2 = ImageIO.read(new File("c:\\maska.jpg"));
} catch (IOException ex) {
ex.printStackTrace();
}
// uložení rastrů
Raster rbimg = bimg.getData();
Raster rbimgmask = bimg2.getData();
// převedení rastru do DataBufferu
DataBuffer databimg = rbimg.getDataBuffer();
DataBuffer databimgmask = rbimgmask.getDataBuffer();
// inicializace alpha hodnoty
int alpha = -1;
// projetí ve foru celým DataBufferem
for (int i = 0; i < databimg.getSize(); i++) {
// zjistí hodnoty na pozici
int g = databimg.getElem(i);
int c = databimgmask.getElem(i);
// pokud je bílá nastav element na alpha
if (c == 0){
databimg.setElem(i,alpha);
}
}
zatím to nefunguje ale mám pocit ,že už stačí jen zjistit počet prvků který
tvoří jeden pixel a pak přepsat for podobně jako
for (int i = 0; i < databimg.getSize(); i++3) {
// zjistí hodnoty na pozici
int g1 = databimg.getElem(i);
int g2 = databimg.getElem(i+1);
int g3 = databimg.getElem(i+2);
int c1 = databimgmask.getElem(i);
int c2 = databimgmask.getElem(i+1);
int c3 = databimgmask.getElem(i+2);
// pokud je bílá nastav element na alpha
if ((c1 == 0)&&(c2 ==0)&&(c3 ==0)){
databimg.setElem(i,alpha);
databimg.setElem(i+1,alpha);
databimg.setElem(i+2,alpha);
}
ještě jsem se chtěl zeptat jak převádět správně 0.0f na int// hodnota
alpha v float.
celý to mám založený na dvoubarevný masce , kde pokud je v masce bílá
nastavím v obrázku hodnotu na alpha.
Jako variantu k nastavování elementu v DataBufferu obrázku (ne Masky) bych
možná mohl nastavovat rastr aplha,
kterej získám z bimg.getAlphaRaster().
Za jakákoliv reakce předem díky
Petr Roubal