2011-09-26 20 views

Respuesta

8

Esta es mi primera respuesta, así que con suerte no me golpearán demasiado. Como nadie más respondió esto, y hoy he dedicado un poco de tiempo a esto, pensé en proporcionar algún código.

La razón principal por la que esto tomó demasiado tiempo para mí, es que por alguna razón, la simulación devserver de la API de imágenes no funciona bien y las imágenes compuestas no son correctas cuando se usa el servidor dev. Estaba gastando todo el tiempo jugueteando con los valores en el devserver, hasta que acabo de subir el código de prueba a AppEngine, y funcionó como se esperaba. Argg!

De todos modos, el siguiente código supone que tiene dos imágenes de 300x300, una en una Imagen y otra en bImage, que desea pegar una al lado de la otra en un nuevo lienzo de 600x300, que se crea en la imagen resultante newImage:

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); 

El primer makeComposite coloca la primera imagen en la ubicación 0,0 relativa a TOP_LEFT. El segundo makeComposite coloca la segunda imagen en 300,0. Ambos están pegados con opacidad 1.0. Espero que esto ayude. Este código guarda el resultado en formato JPEG. Y, una vez más, para mí, esto NO FUNCIONA en el servidor dev, pero funciona como se esperaba en la plataforma real de App Engine.

Cuestiones relacionadas