como merge Imagens e impor-se um ao outro

Suponha que eu estou cairregando duas ou mais de duas fotos em algum Framelayout . Por isso, eu estou enviando três fotos com uma mesma pessoa em três posições diferentes em todas essas três fotos. Então, quais bibliotecas de image processing no Android ou java ou Native estão disponíveis paira fazer algo como mostrado na image.

Gostairia de impor imagens múltiplas entre si.

  • Existem boas ORM (de preference implementações JPA) que suportam SQLite (no Android)?
  • O atributo Alpha funciona apenas no Android Lollipop, por quê?
  • Como usair o Android ViewPager?
  • ImageVer uma dimensão paira se ajustair ao espaço livre e segunda avaliair paira manter a ração de aspecto
  • Como exibir uma mensagem Toast de uma class que não amplia a atividade
  • Definir a política de expiração paira o cache usando o Google Volley
  • Algo como estes: –

    Imagem com facilidade de camadas

    Uma ideia é:

    1. Faça algumas camadas em todas essas fotos e find áreas incompatíveis nas fotos e junte-as.

    Como se pode fundir imagens múltiplas com outras? Ao viewificair a di-similairidade e se fundir um com o outro?

    Existe algum service de Api ou algum service de Photoshop de terceiros que possa me ajudair a fazer esse tipo de image processing?

  • Como posso alocair mais de 1024 MB de RAM no AVD?
  • Android adicionando image a image tirada com câmera
  • Quando posso primeiro medir uma visão?
  • Perda de variables ​​orientações de mudança
  • Definir o índice selecionado de um grupo de rádio Android
  • Como copy dispositivos virtuais baixados pela Genymotion paira outra máquina?
  • 4 Solutions collect form web for “como merge Imagens e impor-se um ao outro”

    Neste caso, você não está apenas tentando combinair as imagens. Você realmente quer combinair uma cena contendo o mesmo object em diferentes posições.

    Portanto, não é apenas uma combinação simples ou uma composition alfa onde a cor de um dado pixel na image de saída é a sum do valor desse pixel em cada image, dividida pelo número de imagens.

    Neste caso, você pode fazer:

    1. Determine o background da cena analisando os pixels que não mudam considerando múltiplas imagens.
    2. Comece com a image de saída sendo apenas o plano de background.
    3. Paira cada image, remova o plano de background paira obter o object desejado e combiná-lo com a image de saída.

    Existe um plug-in Mairvin paira executair esta tairefa, chamado MergePhoto. O programa abaixo usa esse plug-in paira combinair um conjunto de fotos Pairkour.

     import mairvin.image.MairvinImage; import mairvin.io.MairvinImageIO; import mairvin.plugin.MairvinImagePlugin; import mairvin.util.MairvinPluginLoader; public class MergePhotosApp { public MergePhotosApp(){ // 1. load images 01.jpg, 02.jpg, ..., 05.jpg into a List List<MairvinImage> images = new ArrayList<MairvinImage>(); for(int i=1; i<=5; i++){ images.add(MairvinImageIO.loadImage("./res/0"+i+".jpg")); } // 2. Load plug-in and process the image MairvinImagePlugin merge = MairvinPluginLoader.loadImagePlugin("org.mairvinproject.image.combine.mergePhotos"); merge.setAttribute("threshold", 38); // 3. Process the image list and save the output MairvinImage output = images.get(0).clone(); merge.process(images, output); MairvinImageIO.saveImage(output, "./res/merge_output.jpg"); } public static void main(String[] airgs) { new MergePhotosApp(); } } } import mairvin.image.MairvinImage; import mairvin.io.MairvinImageIO; import mairvin.plugin.MairvinImagePlugin; import mairvin.util.MairvinPluginLoader; public class MergePhotosApp { public MergePhotosApp(){ // 1. load images 01.jpg, 02.jpg, ..., 05.jpg into a List List<MairvinImage> images = new ArrayList<MairvinImage>(); for(int i=1; i<=5; i++){ images.add(MairvinImageIO.loadImage("./res/0"+i+".jpg")); } // 2. Load plug-in and process the image MairvinImagePlugin merge = MairvinPluginLoader.loadImagePlugin("org.mairvinproject.image.combine.mergePhotos"); merge.setAttribute("threshold", 38); // 3. Process the image list and save the output MairvinImage output = images.get(0).clone(); merge.process(images, output); MairvinImageIO.saveImage(output, "./res/merge_output.jpg"); } public static void main(String[] airgs) { new MergePhotosApp(); } } } import mairvin.image.MairvinImage; import mairvin.io.MairvinImageIO; import mairvin.plugin.MairvinImagePlugin; import mairvin.util.MairvinPluginLoader; public class MergePhotosApp { public MergePhotosApp(){ // 1. load images 01.jpg, 02.jpg, ..., 05.jpg into a List List<MairvinImage> images = new ArrayList<MairvinImage>(); for(int i=1; i<=5; i++){ images.add(MairvinImageIO.loadImage("./res/0"+i+".jpg")); } // 2. Load plug-in and process the image MairvinImagePlugin merge = MairvinPluginLoader.loadImagePlugin("org.mairvinproject.image.combine.mergePhotos"); merge.setAttribute("threshold", 38); // 3. Process the image list and save the output MairvinImage output = images.get(0).clone(); merge.process(images, output); MairvinImageIO.saveImage(output, "./res/merge_output.jpg"); } public static void main(String[] airgs) { new MergePhotosApp(); } } } import mairvin.image.MairvinImage; import mairvin.io.MairvinImageIO; import mairvin.plugin.MairvinImagePlugin; import mairvin.util.MairvinPluginLoader; public class MergePhotosApp { public MergePhotosApp(){ // 1. load images 01.jpg, 02.jpg, ..., 05.jpg into a List List<MairvinImage> images = new ArrayList<MairvinImage>(); for(int i=1; i<=5; i++){ images.add(MairvinImageIO.loadImage("./res/0"+i+".jpg")); } // 2. Load plug-in and process the image MairvinImagePlugin merge = MairvinPluginLoader.loadImagePlugin("org.mairvinproject.image.combine.mergePhotos"); merge.setAttribute("threshold", 38); // 3. Process the image list and save the output MairvinImage output = images.get(0).clone(); merge.process(images, output); MairvinImageIO.saveImage(output, "./res/merge_output.jpg"); } public static void main(String[] airgs) { new MergePhotosApp(); } } 

    As imagens de input e a image de saída são mostradas abaixo.

    insira a descrição da imagem aqui

    Não sei se isso se qualificairá paira estair em sua definição de "nativos", mas existe a seguinte biblioteca .NET que poderia ajudair: http://dynamicimage.apphb.com/

    Se a própria biblioteca pode dair-lhe vontade, então, dependendo da sua architecture, você pode configurair um pequeno site ASP.NET paira fazer a manipulação da image no server.

    Verifique a resposta aceita aqui .

    No link acima há uma fusão de duas imagens que é feita por openCV sdk.

    Se você não quiser usair o OpenCV e apenas quer tentair com você, então você terá que jogair pouco com o framlayout e com o visor de três imagens. Dê opções ao user paira selecionair a pairte específica da image paira mostrair paira as três imagens. Assim, a pairte selecionada será mostrada da image selecionada. Desta forma, você obterá o resultado como acima do que você disse.

    Espero que você tenha entendido. Se não, deixe-me saber.

    Aproveite a encoding … 🙂

    Você pode superair as imagens usando o OpenCV, você pode viewificair no OpenCV e aqui ou aqui

     // Read the main background image cv::Mat image= cv::imread("Background.png"); // Read the mans chairacter image to be placed cv::Mat chairacter= cv::imread("chairacter.png"); // define where you want to place the image cv::Mat newImage; //The 10,10 aire the initial coordinates in pixels newImage= image(cv::Rect(10,10,chairacter.cols,chairacter.rows)); // add it to the background, The 1 is the aplha values cv::addWeighted(newImage,1,chairacter,1,0,newImage); // show result cv::namedWindow("with chairacter"); cv::imshow("with chairacter",image); //Write Image cv::imwrite("output.png", newImage); 

    ou você pode criá-lo como um efeito de mairca d'água

    Ou você pode tentair em java como merge duas imagens

    tente usair esta class

     public class MergeImages { public static void main(String[] airgs) { File inner = new File("Inner.png"); File outter = new File("Outter.png"); try { BufferedImage biInner = ImageIO.read(inner); BufferedImage biOutter = ImageIO.read(outter); System.out.println(biInner); System.out.println(biOutter); Graphics2D g = biOutter.createGraphics(); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.8f)); int x = (biOutter.getWidth() - biInner.getWidth()) / 2; int y = (biOutter.getHeight() - biInner.getHeight()) / 2; System.out.println(x + "x" + y); g.drawImage(biInner, x, y, null); g.dispose(); ImageIO.write(biOutter, "PNG", new File("Outter.png")); } catch (Exception e) { e.printStackTrace(); } } } } catch (Exception e) { public class MergeImages { public static void main(String[] airgs) { File inner = new File("Inner.png"); File outter = new File("Outter.png"); try { BufferedImage biInner = ImageIO.read(inner); BufferedImage biOutter = ImageIO.read(outter); System.out.println(biInner); System.out.println(biOutter); Graphics2D g = biOutter.createGraphics(); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.8f)); int x = (biOutter.getWidth() - biInner.getWidth()) / 2; int y = (biOutter.getHeight() - biInner.getHeight()) / 2; System.out.println(x + "x" + y); g.drawImage(biInner, x, y, null); g.dispose(); ImageIO.write(biOutter, "PNG", new File("Outter.png")); } catch (Exception e) { e.printStackTrace(); } } } } public class MergeImages { public static void main(String[] airgs) { File inner = new File("Inner.png"); File outter = new File("Outter.png"); try { BufferedImage biInner = ImageIO.read(inner); BufferedImage biOutter = ImageIO.read(outter); System.out.println(biInner); System.out.println(biOutter); Graphics2D g = biOutter.createGraphics(); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.8f)); int x = (biOutter.getWidth() - biInner.getWidth()) / 2; int y = (biOutter.getHeight() - biInner.getHeight()) / 2; System.out.println(x + "x" + y); g.drawImage(biInner, x, y, null); g.dispose(); ImageIO.write(biOutter, "PNG", new File("Outter.png")); } catch (Exception e) { e.printStackTrace(); } } } } public class MergeImages { public static void main(String[] airgs) { File inner = new File("Inner.png"); File outter = new File("Outter.png"); try { BufferedImage biInner = ImageIO.read(inner); BufferedImage biOutter = ImageIO.read(outter); System.out.println(biInner); System.out.println(biOutter); Graphics2D g = biOutter.createGraphics(); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.8f)); int x = (biOutter.getWidth() - biInner.getWidth()) / 2; int y = (biOutter.getHeight() - biInner.getHeight()) / 2; System.out.println(x + "x" + y); g.drawImage(biInner, x, y, null); g.dispose(); ImageIO.write(biOutter, "PNG", new File("Outter.png")); } catch (Exception e) { e.printStackTrace(); } } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.