Hoj,
kdybych zachovával původní poměr stran tak mi to stačí v tom provedení co
jsem psal. Jenže potřebuju aby obrázek měl vždy 800*600 ,jelikož z něho
potom budu vysekávat části ,abych z nich mohl udělat puzzle.
Druhá možnost je samozřejmě nechat obrázek v původní velikosti a resizovat
mapy na velikost obrázku. Nicméně bych pak plochu ,do které skládám
nezobrazil na jedné obrazovce.
Petr Roubal
Petr Ferschmann
<[EMAIL PROTECTED]
eu.com> Komu
Odeslal: Java <[email protected]>
konference-bounce Kopie
[EMAIL PROTECTED]
Předmět
Re: Image Scaling
01.02.2007 22:39
Odpovězte prosím
uživateli
Java
<[EMAIL PROTECTED]
cz>
Zdravím,
my jsme pro změnu velikosti obrázku použili toto:
BufferedImage source;
// nejak vypoctenu z puvodni velikosti a pozadovaneho zmenseni
int destWidth;
int destHeight = 600;
Image img = source.getScaledInstance(destWidth, destHeight,
Image.SCALE_SMOOTH);
BufferedImage outImage = new BufferedImage(destWidth, destHeight,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = outImage.createGraphics();
g2.drawImage(img, 0, 0, null);
g2.dispose();
return outImage;
Vy chcete zrušit původní poměr stran obrázku? Nebylo by lepší jej
zachovat?
[EMAIL PROTECTED] píše v Čt 01. 02. 2007 v 22:03 +0100:
> Hoj,
> nemohl by mě někdo poradit? Potřebuju upravit velikost zobrazovanýho
obrázku na požadovanou velikost 800*600. Původní velikost 2048*1056.
> Zkoušel jsem to tímto způsobem ale funguje jen když místo
scaledBimg.scale(ResizeDimX,ResizeDimY); napíšu třeba
> scaledBimg.scale(0.1,0.8); jenomže on mi pak resizuje i Y osu podle 0.1 a
obrázek je místo 800*600 např 800*240 takže původní obrázek není znatelný.
> Prakticky se mi to jeví jako kdyby druhou hodnotu ignoroval.
>
> int rozmerX = 800;
> int rozmerY = 600;
> BufferedImage bimg = null;
>
> // BufferedImage[][] poleObr = new
BufferedImage[pocetKostekX][pocetKostekY];
> try {
> // načtení obrázků
> bimg = ImageIO.read(new File("c:\\LV.jpg"));
> } catch (IOException ex) {
> ex.printStackTrace();
> }
>
> // ------------scaledImage
>
> BufferedImage scaledImage = new
BufferedImage(rozmerX,rozmerY,bimg.getType());
> Graphics2D scaledBimg = scaledImage.createGraphics();
> double ResizeDimX = rozmerX/bimg.getWidth();
> double ResizeDimY = rozmerY/bimg.getHeight();
> scaledBimg.scale(ResizeDimX,ResizeDimY);
> scaledBimg.drawImage(bimg,null,0,0);
> //--------------scaledImage
> pak už jen scaledImage předám do ImageIcon a v JLabelu zobrazím.
> Mohl by někdo poradit kde dělám chybu ?
> Zkoušel jsem použít i AffineTransform ale nějak to i podle návodu
nefungovalo tak jak má. Prostě nejsem schopnej udělat jinou transformaci
pro X a jinou pro Y.
>
> Za jakoukoliv radu moooc diky
>
> Petr Roubal
>
--
Petr Ferschmann
SoftEU s.r.o.
-----------------------------------
Sady Petatricatniku 31
301 00 Plzen
Czech Republic
-----------------------------------
Phone: +420 373 729 300
Fax: +420 373 729 301
Cell: +420 775 638 008
E-mail: [EMAIL PROTECTED]