我看到python代码将Google App Engine中的两个图像与'composite'结合在一起。但是我需要Java代码来使用'composite'合并两个图像。显示实际代码将非常有帮助。

最佳答案

这是我的第一个答复,因此希望我不会被锤得太厉害。由于没有其他人回答这个问题,并且我今天花了一些时间在此上,所以我认为我会提供一些代码。

这对我来说花费了太多时间的主要原因是,无论出于何种原因,Images API的devserver模拟均无法正常工作,并且在使用devserver时合成图像不正确。我一直在花时间摆弄devserver中的值,直到我刚刚将测试代码上传到AppEngine,它就按预期工作了。啊!

无论如何,下面的代码假定您有两个300x300的图像,一个图像位于aImage中,另一个图像则位于bImage中,您想要并排粘贴到600x300的新 Canvas 中,该 Canvas 是在生成的Image 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);

第一个makeComposite将第一个图像放置在相对于TOP_LEFT的位置0,0处。第二个makeComposite将第二个图像放置在300,0处。两者都粘贴有不透明度1.0。希望这可以帮助。此代码将结果保存为JPEG格式。而且,对我来说,这在devserver中不起作用,但是在真实的App Engine平台上可以正常工作。

10-04 23:09