Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [java] ridimensionare immagine

    Ciao ragazzi, sto diventando matto per ridimensionare un immagine. Ho visto vari codici in rete ma da tutti ottengo un file di 0 byte...Posto l'ultimo metodo che stavo provando

    codice:
    public void resizeImg(String savePath, double percent ) {
    		try { 
    			
      File fileName = new File(file.getAbsolutePath());
      System.out.println(file.getAbsolutePath());   // il nome file lo stampa correttamente
      BufferedImage bufImg = ImageIO.read(fileName);
      double sc = percent / 100;
      AffineTransform tx = new AffineTransform();
      tx.scale(sc,sc);
    
      AffineTransformOp op = new AffineTransformOp(tx, null);
      bufImg = op.filter(bufImg, null);
    
      File outputFile = new File(savePath);
      ImageIO.write(bufImg,getExtension(),outputFile);
    			
    
    			
    	    } catch (IOException e) { 
     JOptionPane.showMessageDialog(null, "Impossible to resize " + file.getName() + "!", "Error Message", JOptionPane.ERROR_MESSAGE);
    
    	    }
    	    }
    dove sbaglio?..esiste un tutorial in rete che spiega come effettuare tale operazione?
    grazie

    n.b. file è una variabile di classe
    getExtensione è un metodo che prende l'estensione di file

  2. #2
    per ridimensionare intendi le dimensioni?

    cmq io usavo il metodo getScalatedInstance della classe Image dove basta passargli le nuove dimensioni e la modalità di ridimensionameno.
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  3. #3

    intendevo..

    ..per ridimensionare i pixel. percent è la percentuale.

    ho visto codici con getScaledInstance e li ho provati...ma sempre lo stesso problema ottengo un file da 0 byte!

  4. #4

    ....

    questo è un altro codice con lo stesso risultato..un nuovo file di 0 byte..

    codice:
    public void resizeImg(String savePath, int percent ) {
    		if (percent == 100)
    			return;
    		try { 
    			
    			File fileName = new File(file.getAbsolutePath());
    			BufferedImage img = ImageIO.read(fileName);
    		
            
    			int w = img.getWidth();
    			int h = img.getHeight();
    			int type = img.getType();
    			System.out.println("Dimensioni Originali:" + w +" x " + h);
    			int targetW = w * percent / 100;
    			int targetH = h * percent / 100;
    			BufferedImage ret = (BufferedImage) img; 
    			do { 
    				if (w<targetW) {
    					w = w * 2;
    					h = h * 2;
    					if (w>targetW) {
    						w = targetW;
    						h = targetH;
    					}
    				}
    				if (w> targetW) {
    					w = w/=2;
    					h = h/=2;
    					if (w<targetW) {
    						w = targetW;
    						h= targetH;
    					}
    				
    				}
    				
    				   BufferedImage tmp = new BufferedImage(w, h, type); 
    		            Graphics2D g2 = tmp.createGraphics(); 
    		            g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); 
    		            g2.drawImage(ret, 0, 0, w, h, null); 
    		            g2.dispose(); 
    
    		            ret = tmp; 
    
    		        } while (w != targetW || h != targetH); 
    				
    			System.out.println("Dimensioni Modificate:" + w +" x " + h);
    			File resizeFile = new File(savePath); 
    		    FileOutputStream fos;
    		    fos = new FileOutputStream(resizeFile); 
                ImageIO.write(ret, getExtension(), fos); 
                fos.close();  
                } catch (IOException e) { 
    	    	JOptionPane.showMessageDialog(null, "Impossible to resize " + file.getName() + "!", "Error Message", JOptionPane.ERROR_MESSAGE);
    
    	    }
    	    }
    nessuno riesce ad aiutarmi?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Partendo dal fatto che ho guardato soltanto il primo codice che hai postato , l'ho provato (ovviamente non so come tu abbia implementato "getExtension" , ma ho messo ad esempio un semplice "jpg") e funziona , ottengo l'immagine ridimensionata secondo la percentuale specificata e nella locazione da me specificata..sei sicuro che magari non commetti qualche errore nell'acquisire il path dell'immagine?

    EDIT: ho provato a mettere un "formatName" errato ed ottengo proprio un file da 0 byte , ho l'impressione che il tuo errore stia proprio nel tuo metodo "getExtension"

  6. #6

    bravoooo

    Originariamente inviato da zipangulu
    Partendo dal fatto che ho guardato soltanto il primo codice che hai postato , l'ho provato (ovviamente non so come tu abbia implementato "getExtension" , ma ho messo ad esempio un semplice "jpg") e funziona , ottengo l'immagine ridimensionata secondo la percentuale specificata e nella locazione da me specificata..sei sicuro che magari non commetti qualche errore nell'acquisire il path dell'immagine?

    EDIT: ho provato a mettere un "formatName" errato ed ottengo proprio un file da 0 byte , ho l'impressione che il tuo errore stia proprio nel tuo metodo "getExtension"

    grazieeee
    mettevo l'estensione con il punto!
    nelle prove che avevo fatto ho tolto getExtension() ma avevo messo ".jpg"!
    adesso provo anche l'altro codice.
    grazie per l'aiuto.

    EDIT: funziona pure l'altro!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.