2011-09-26 11 views

risposta

8

Questa è la mia prima risposta, quindi spero di non essere martellata troppo male. Dato che nessun altro ha risposto a questo, e ho passato un po 'di tempo su questo oggi, ho pensato di fornire del codice.

Il motivo principale per cui è passato troppo tempo per me è che, per qualche ragione, la simulazione del devserver dell'API di Immagini non funziona correttamente e le immagini composite non sono corrette quando si utilizza il devserver. Stavo spendendo per sempre a giocherellare con i valori del devserver, fino a quando ho appena caricato il codice di test su AppEngine, e ha funzionato come previsto. Argg!

In ogni caso, il codice seguente presuppone che si abbiano due immagini 300x300, una in un'immagine e un'altra in immagine, che si desidera incollare fianco a fianco in una nuova tela 600x300, che viene creata nell'Immagine nuova risultante:

List<Composite> listComposites=new ArrayList<Composite>(); 

Composite aPaste = ImagesServiceFactory.makeComposite(aImage, 0, 0, 1f, Composite.Anchor.TOP_LEFT); 
listComposites.add(aPaste); 

Composite bPaste = ImagesServiceFactory.makeComposite(bImage, 300, 0, 1f, Composite.Anchor.TOP_LEFT); 
listComposites.add(bPaste); 

Image newImage = imagesService.composite(listComposites, 600, 300, 0xff333333L, ImagesService.OutputEncoding.JPEG); 

Il primo makeComposite colloca la prima immagine nella posizione 0,0 rispetto a TOP_LEFT. Il secondo makeComposite colloca la seconda immagine a 300,0. Entrambi sono incollati con opacità 1.0. Spero che questo ti aiuti. Questo codice salva il risultato in formato JPEG. E, ancora una volta, per me, questo NON FUNZIONA nel devserver, ma funziona come previsto sulla vera piattaforma App Engine.

Problemi correlati