Intanto grazie
vorrei centrare orizzontalmente mantenendo quindi il aspect-ratio se possibile modificare anche i dpi.
Intanto grazie
vorrei centrare orizzontalmente mantenendo quindi il aspect-ratio se possibile modificare anche i dpi.
Ultima modifica di desiderio; 14-01-2017 a 18:30
Allora la questione è un po' diversa. Nel senso che non basta (e non serve!) getScaledInstance.
Devi fare le seguenti operazioni:
1) Creare un nuovo BufferedImage di 1920x1080 pixel
2) Ottenere il suo Graphics2D
3) Riempire la immagine (metodo fillRect) con un colore di sfondo, es. bianco (se non sbaglio il default è nero) o come vuoi
4) Disegnare la immagine catturata (uno dei metodi drawImage) ad un certo offset, che calcolato è x=(1920-1680)/2=120 e y=0
5) Fare il dispose() del Graphics2D
La immagine è quindi pronta.
Per il 1) è sufficiente:
BufferedImage bufImg = new BufferedImage(1920, 1080, BufferedImage.TYPE_INT_RGB);
Qui c'è da chiarire. Il "dpi" ovvero dot-per-inch entra in gioco SOLO quando un tot di pixel vengono rapportati ad una dimensione FISICA (in pollici, appunto da inch).
1920 pixel sono 1920 pixel ... e basta. La nozione di dpi non cambia nulla nei pixel o nella immagine in sé. L'unica cosa che si può impostare (e sui JPEG è possibile) è un "meta-dato" all'interno del file immagine, in modo che un altro programma che dovesse "aprire" la immagine, ad esempio per poi stamparla su carta, possa sapere quale è il dpi assunto per quella immagine.
Con la API ImageIO mi pare ci sia il modo per cambiare dei meta-dati delle immagini ma se ben ricordo non è proprio banale. E poi ripeto, dipende da DOVE verrà usata la immagine.
Consiglio: per il momento ignora la questione del dpi.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet