Domanda

Sto creando un'applicazione in Java che farà parte di un'applicazione esterna. La mia applicazione contiene una finestra che mostra alcuni poligoni e cose del genere. L'applicazione esterna deve ottenere l'immagine del viewport in formato gif. Per questo chiama un metodo in un'interfaccia (implementata dalla mia applicazione) e la mia applicazione restituisce l'immagine. L'applicazione esterna deve archiviare l'immagine nel database (o qualcosa ad esso correlato di cui non devo preoccuparmi).

La mia domanda è: - Quale dovrebbe essere il tipo di contenitore di dati dell'immagine quando la mia applicazione lo invia all'applicazione esterna? Voglio dire quale dovrebbe essere il tipo di ritorno del metodo? Attualmente la mia classe di codificatore gif restituisce un array di byte. C'è qualche altra opzione "migliore"?

È stato utile?

Soluzione

Un array di byte potrebbe essere appropriato se ti aspetti che le GIF siano piccole, ma potresti prendere in considerazione l'uso di un OutputStream in modo da poter trasmettere i bit in modo più efficiente.

Anche se oggi restituissi un ByteArrayOutputStream completamente popolato, ciò ti consentirebbe di modificare l'implementazione in futuro senza influire sul codice cilent.

Altri suggerimenti

Un tipo di ritorno più intuitivo potrebbe essere java.awt.Image.

Ecco alcuni esempi: http://www.google.com/codesearch? q = java + gif + immagine & amp; hl = it & amp; btnG = Ricerca + Codice

Se la tua 'applicazione' sta effettivamente chiamando un metodo Java, allora dovrebbe capire i tipi di ritorno Java e dovresti restituire java.awt.image.

Se lo fai attraverso un qualche tipo di procedura remota che non riesce a capire i tipi Java, restituirei un array di byte e lascerei decodificare l'app di ricezione.

Creerei due metodi:

  1. Il primo metodo crea l'immagine e restituisce un java.awt.Image . Qui puoi inserire la parte di disegno del tuo metodo.
  2. Il secondo metodo crea una rappresentazione gif di java.awt.Image come richiesto dall'applicazione esterna. Dovrebbe restituire OutputStream come già suggerito.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top