Ragazzi ho qualche problema con la getSubimage(29, 29, 512, 512);
vorrei partire al pixel numero 29 ma parte sempre dallo spigolo in alto a sinistra come è possibile??
Ragazzi ho qualche problema con la getSubimage(29, 29, 512, 512);
vorrei partire al pixel numero 29 ma parte sempre dallo spigolo in alto a sinistra come è possibile??
Se stai parlando di BufferedImage (avresti dovuto precisarlo .... non siamo veggenti), il metodo citato fa appunto quello che dice: fornisce una "sotto" immagine.Originariamente inviato da vanno88
Ragazzi ho qualche problema con la getSubimage(29, 29, 512, 512);
vorrei partire al pixel numero 29 ma parte sempre dallo spigolo in alto a sinistra come è possibile??
Il punto è che fornisce un nuovo BufferedImage dove però entrambe le immagini (originale e ritagliata) condividono gli stessi dati (ovviamente quella ritagliata può vedere solo una porzione più piccola).
Quindi dovresti specificare cosa ci fai con queste due immagini, la originale e quella ritagliata.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
scusate si stavo parlando di BufferedImage.
Mi servirebbe sapere come poter utilizzare la getSubimage in modo da ottenere un'immagini più piccola della originale (salvata in una directory) la vorrei più piccola di 30 pixel per ogni bordo.
solo che facendo getSubimage(29, 29, 512, 512); mi parte comunque dallo spigolo in alto a sinistra senza eliminare i 30 px dal lato sinistro e del lato superiore..
spero di essere stato abbastanza chiaro
Ma ripeto: getSubimage funziona! (non mi pare ci siano "bachi") E proprio così come dice: gli passi x/y/w/h e lui ti restituisce una "sotto" immagine. Punto.Originariamente inviato da vanno88
scusate si stavo parlando di BufferedImage.
Mi servirebbe sapere come poter utilizzare la getSubimage in modo da ottenere un'immagini più piccola della originale (salvata in una directory) la vorrei più piccola di 30 pixel per ogni bordo.
solo che facendo getSubimage(29, 29, 512, 512); mi parte comunque dallo spigolo in alto a sinistra senza eliminare i 30 px dal lato sinistro e del lato superiore..
spero di essere stato abbastanza chiaro
Come fai a dire che parte dalla origine 0,0 pur passando 29,29??? Da cosa lo vedi poi?
Se vuoi togliere 30px da ogni lato, ti devi calcolare w/h e dovresti farlo dal width/height di quella originale. E nota: se vuoi 30 pixel, dovresti passare 30, 30 ... non 29, 29.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
quando stampo le due immagini (quella originale e la sotto immagine) si vede chiaramente che la parte in alto a sinistra non è tagliata ed è invece tagliata la parte inferiore e destra dell'immagine originale.
a me non funziona la getSubimage(x,y,w,h);
Allora inizia magari a postare del codice, almeno le parti più significative (dove ottieni il BufferedImage originale, dove fai il "ritaglio", dove le visualizzi).Originariamente inviato da vanno88
quando stampo le due immagini (quella originale e la sotto immagine) si vede chiaramente che la parte in alto a sinistra non è tagliata ed è invece tagliata la parte inferiore e destra dell'immagine originale.
a me non funziona la getSubimage(x,y,w,h);
Altrimenti è inutile che continui a dire che non funziona .... non ho la sfera di cristallo ....![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
questo è il codice:
è chiaro che cosi a partire dal BufferedImage ottenuto dall'immagine originale (prima riga di codice), ottengo un nuovo BufferedImage dato dalla sotto immagine (seconda riga) e poi nella terza riga mi preoccupo di riscrivere una nuova immagine contenente la Subimage recuperata nella riga precedente.codice:BufferedImage outImage = ImageIO.read(new File(servletPath+"/images/"+request.getSession()+"mappa_"+numImg+".gif")); BufferedImage img=outImage.getSubimage(200,100,300,300); ImageIO.write((RenderedImage)img,"GIF",new File(servletPath+"/images/"+request.getSession()+"mappaTagliata_"+numImg+".gif"));
Per ciò che riguarda la visualizzazione fatto il salvattaggio vado a controllare manualmente nella directory e apro le due immagini: come detto sopra il risultato è un'immagine in cui è stato ritagliato solo il bordo inferiore e laterale destro.
a me sembra il codice che usa mezzo mondo... però io sono l'unico pirla che non riesce a farlo funzionare correttamente....