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]