Home Tutorials Java e Java2D Java 2D --- Creare molte anteprime di immagini con un click

Page Rank Check    





Java 2D --- Creare molte anteprime di immagini con un click
Tutorials - Java e Java2D
Scritto da RedBaron85   
Sabato 30 Gennaio 2010 14:04

 

Java 2D --- Creare molte anteprime di immagini con un click

A volte abbiamo bisogno di creare l’anteprima (thumbnail) di un’immagine, ad esempio per inserirla su un sito Web… ovviamente, è possibile utilizzare anche un semplice programma di disegno o fotoritocco per svolgere questo compito, ma quando ci sono 1.000 immagini da elaborare questo lavoro può risultare noioso e ripetitivo, e quando un lavoro è ripetitivo un buon informatico lo definisce una volta e lascia al computer il compito di eseguirlo 1.000 volte !

Descriverò qui due classi Java, "AutoThumbnailer" e "MassThumbnailer", il cui codice sorgente si trova più in basso in questo articolo, per cui vi basterà copiarlo, incollarlo e compilarlo; prima, però, una descrizione dei "punti salienti" !

 

AUTOTHUMBNAILER

Questo programmino prenderà un solo argomento a linea di comando: il path del file di input.

Il path del file di output viene generato automaticamente a partire da quello di input:

String formato = args[0].substring((args[0].length()-3));

String nomeThumbnail = args[0] + ".THU." + formato;

In seguito, il software ricava un oggetto Image a partire dal file di input e genera la BufferedImage che ci servirà per l’output.

Il metodo drawImage disegna l’immagine passata in input sulla BufferedImage di output, scalandola alle dimensioni prefissate (da me, tali dimensioni sono fisse x=y=100 px, tuttavia potete facilmente editare il codice, ad esempio passando x e y come argomenti a linea di comando, e ricompilare il tutto):

Image in = new ImageIcon(args[0]).getImage();

BufferedImage out = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);

Graphics2D g = out.createGraphics();

g.drawImage(in, 0, 0, 100, 100, null);

g.dispose();

Il blocco try-catch che segue si occupa di scrivere la BufferedImage sul file di output, che avrà un path derivato da quello del file di input, come descritto precedentemente.

 

 

MASSTHUMBNAILER

A questo punto vogliamo utilizzare "AutoThumbnailer" per creare molte anteprime di immagini in un colpo solo… MassThumbnailer fa uso del package java.lang.Runtime per eseguire tante istanze di AutoThumbnailer quanti sono i file da processare.

Si tratta di un software molto primitivo: eseguito, crea una lista dei file presenti nella cartella…

Runtime myRuntime = Runtime.getRuntime();

File curDir = new File(".");

String [] ListaFile = curDir.list();

… e, se il file é di tipo JPG e NON é una thumbnail (effettua un controllo sull’estensione), esegue AutoThumbnailer sul file:

if((ListaFile[i].endsWith(".jpg") || (ListaFile[i].endsWith(".JPG"))) && !(ListaFile[i].endsWith(".THU.jpg")) && !(ListaFile[i].endsWith(".THU.JPG")))

{

myRuntime.exec("java AutoThumbnailer " + ListaFile[i]);

}

AutoThumbnailer e MassThumbnailer sono due utility, a dire il vero un pò primitive, che possono essere scaricate, editate e compilate liberamente…

Ne parlo qui soprattutto per illustrare come poter:

  1. creare una BufferedImage a partire da una Image e scrivere la stessa su file;

  2. eseguire un altro software tramite il comando exec del package Runtime.

Ecco qui il codice di AutoThumbnailer:

//AUTO-THUMBNAILER
//Le thumbnail hanno dimensione 100x100; per creare velocemente thumbnails a partire da un file immagine, utilizzare questo programmino Java (scritto dal...sottoscritto):
import java.awt.*;
import java.awt.Image.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
import javax.swing.ImageIcon;

public class AutoThumbnailer
{
public static void main(String [] args)
{
// Il primo e unico argomento é il nome del file in ingresso. Sono validi i formati jpg, png, gif e FORSE bmp.

String formato = args[0].substring((args[0].length()-3));
String nomeThumbnail = args[0] + ".THU." + formato;


Image in = new ImageIcon(args[0]).getImage();

// Il nome del file in uscita é dato dal nome del file in ingresso più l'estensione ".THU.[formato]".
// Il file in uscita ha dimensioni 100x100 px.
BufferedImage out = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);

Graphics2D g = out.createGraphics();
g.drawImage(in, 0, 0, 100, 100, null);
g.dispose();

try
{
ImageIO.write(out, formato, new File(nomeThumbnail));
}
catch(Exception e)
{
System.out.println("Errore: " + e);
System.exit(1);
}
finally
{
System.exit(0);
}
}
}

...ed ecco qui il codice di MassThumbnailer:

import java.io.*;
import java.lang.Runtime;


public class MassThumbnailer
{
public static void main(String[] args)
{
Runtime myRuntime = Runtime.getRuntime();
File curDir = new File(".");
String [] ListaFile = curDir.list();
boolean flag = true;
while(flag)
{
try
{
for(int i=0; ; i++)
{

if((ListaFile[i].endsWith(".jpg") || (ListaFile[i].endsWith(".JPG"))) && !(ListaFile[i].endsWith(".THU.jpg")) &&    !(ListaFile[i].endsWith(".THU.JPG")))
{
myRuntime.exec("java AutoThumbnailer " + ListaFile[i]);
}
}
}
catch(Exception e)
{
flag=false;
}
}
System.exit(0);
}
}

 

Buon lavoro ! ;-)

Tags:     tutorial      programmazione      java      java 2d      anteprime      thumbnails
Ultimo aggiornamento Mercoledì 02 Novembre 2011 15:53
 

Ti è piaciuto questo articolo ? Condividilo !



RedBaron85.com Forum community banner

Non hai trovato quello che cercavi ?
Ricerca personalizzata
Copyright © 2012 RedBaron85.com: Informatica, CG 2D e 3D, Blender, Python, Java 2D e 3D, 3D Studio e altro ancora!. Tutti i diritti riservati.
Joomla! è un software libero rilasciato sotto licenza GNU/GPL.

Milanese Francesco - Partita IVA: 04950350878

AltroArticoliblog utentiBlueprintsContestenglishProgrammazioneModelliElencoNewsTexturesTutorialsVideotutorials