C'è una buona alternativa a javax.imageio là fuori?
-
13-09-2019 - |
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).
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.