Domanda

Sto cercando una buona alternativa al pacchetto javax.imageio, che mi permette di fare semplice rotazione, taglio e le operazioni di ridimensionamento sulle immagini. Ad esempio, mi piacerebbe fare

int angle, height, width;
image.rotateRight(angle).scale(height, width);

per ottenere un'immagine ruotata angolo gradi a destra e ridimensionati a altezza x larghezza pixel.

Utilizzando Graphics2D e BufferedImages, dovrò fare questo, che non è né leggibile, nè facile scrivere:

BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = result.createGraphics();
graphics.translate(height/2, width/2);
graphics.rotate(angle);
graphics.translate(-width/2, -height/2);
graphics.drawImage(image, 0, 0, width, height, null);

(In realtà, che il codice non ha nemmeno conto di immagini non quadrati, che richiederà me per fare ancora di più la magia con la traduzione).

È stato utile?

Soluzione

C'è il Java Advanced Imaging API che contiene cose utili come un RotatorDescriptor .

Ma confesso che trovo il tuo esempio di cui sopra abbastanza leggibile, quindi non sono sicuro che avrai qualcosa di più a proprio piacimento: -)

Altri suggerimenti

Sono d'accordo con Brian: JAI è molto buona opzione per voi. Potrebbe essere necessario scrivere qualche oggetto delegante per ottenere tale codice leggibile di cui hai bisogno e utilizzarlo al posto di JAI API.

Inoltre è possibile utilizzare Processing ( http://processing.org ). E 'API è più semplice di JAI API. E come risultato di utilizzando l'elaborazione si otterrà una migliore qualità per il ridimensionamento e le operazioni di rotazione per impostazione predefinita.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top