2012-04-15 13 views
7

ho questo servizio con RESTEasy:immagine grezzo in RESTEasy

@GET 
@Path("/{name}") 
@Produces("image/jpeg") 
public BufferedImage get(@PathParam("name") String name) { 

    Monitor m = Monitor.getMonitor(name); 

    if (m == null) { 
     return null; 
    } 

    return m.getImage(); 
} 

allora ottengo dopo la richiesta

Could not find MessageBodyWriter for response object of type: java.awt.image.BufferedImage of media type: image/jpeg 

Esiste un "modo diretto" per ottenere l'immagine nella risposta?


Grazie a @Robert per le indicazioni. qui il codice di lavoro:

@GET 
@Path("/{name}") 
@Produces("image/jpeg") 
public byte[] get(@PathParam("name") String name) { 

    Monitor m = Monitor.getMonitor(name); 

    if (m == null) { 
     return null; 
    } 

    ByteArrayOutputStream bo = new ByteArrayOutputStream(2048); 
    try { 
     ImageIO.write(m.getImage(),"jpeg",bo); 
    } catch (IOException ex) { 
     return null; 
    } 

    return bo.toByteArray(); 
} 

risposta

8

si dovrebbe cercare di

  • codificare il BufferedImage come JPG. Date un'occhiata a classe javax.imageio.ImageIO
  • dichiarare il vostro metodo per restituire un byte[]
  • assicurarsi che l'applicazione sarà sempre eseguito su un server che non è iniziata con java.awt.headless=true (cioè sottosistema grafico non)

Siete pregati di comunicare Sappiamo se funziona, perché non ho idea se lo farà e non potrò provarlo da me in questo momento.

+0

Non sono sicuro del commento su headless, ho eseguito headless = true e funziona come previsto. – PeterMmm

+0

Beh, stavo dando per scontato che le classi 'Monitor' e' ImageIO' non funzionassero in modalità headless. Se lo fanno, bene! –

+0

@Produces ("image/jpeg") mi mancava questo, invece ho usato @Produces (MediaType.WILDCARD) – Sagar

Problemi correlati