我看到python代码用'复合'加入谷歌应用引擎中的两个图像。但我需要java代码使用'composite'来合并两个图像。显示实际代码会非常有用。
答案 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平台上按预期工作。