如何在Java中的谷歌应用引擎中加入2个图像

时间:2011-09-26 07:07:08

标签: java image google-app-engine

我看到python代码用'复合'加入谷歌应用引擎中的两个图像。但我需要java代码使用'composite'来合并两个图像。显示实际代码会非常有用。

1 个答案:

答案 0 :(得分:9)

这是我的第一个回复,所以希望我不会受到太严厉的打击。由于没有其他人回答这个问题,今天我花了一些时间在这上面,我想我会提供一些代码。

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

无论如何,下面的代码假设您有两个300x300图像,一个在aImage中,另一个在bImage中,您要并排粘贴到600x300新画布中,该画布是在生成的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平台上按预期工作。