假设我在一些Framelayout中上传两张或两张以上的照片.在这里,我正在三个不同的位置在同一个人的三张照片上传三张照片.那么什么图像处理库在
Android或Java或Native中可用来执行某些操作,如图所示.
我想强加多张照片.
这些东西:
一个想法是:
>在所有这些图片中进行一些分层,并在图片中找到不匹配的区域并合并它们.
有没有任何第三方Api或一些Photoshop服务,可以帮助我做这些有形图像处理?
解决方法
在这种情况下,您不仅仅是要组合图像.你真的想在不同的位置组合一个包含相同对象的场景.
因此,输出图像中的给定像素的颜色是每个图像中该像素的值之和除以图像数量的总和,不仅仅是一个简单的组合或alpha复合.
在这种情况下,您可以:
>确定场景背景,分析考虑多个图像时不改变的像素.
>从输出图像开始只是背景.
>对于每个图像,删除背景以获得所需的对象并将其与输出图像组合.
有一个Marvin插件来执行这个任务,叫做MergePhoto.下面的程序使用这个插件来组合一套跑酷照片.
import marvin.image.MarvinImage; import marvin.io.MarvinImageIO; import marvin.plugin.MarvinImagePlugin; import marvin.util.MarvinPluginLoader; public class MergePhotosApp { public MergePhotosApp(){ // 1. load images 01.jpg,02.jpg,...,05.jpg into a List List<MarvinImage> images = new ArrayList<MarvinImage>(); for(int i=1; i<=5; i++){ images.add(MarvinImageIO.loadImage("./res/0"+i+".jpg")); } // 2. Load plug-in and process the image MarvinImagePlugin merge = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.combine.mergePhotos"); merge.setAttribute("threshold",38); // 3. Process the image list and save the output MarvinImage output = images.get(0).clone(); merge.process(images,output); MarvinImageIO.saveImage(output,"./res/merge_output.jpg"); } public static void main(String[] args) { new MergePhotosApp(); } }
输入图像和输出图像如下所示.