Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
JHologram - Hologram.java

Hologram.java

Caricato da:
Scarica il programma completo

  1. package jhologram;
  2.  
  3. import java.awt.Color;
  4. import java.awt.image.BufferedImage;
  5. import java.io.File;
  6. import java.io.IOException;
  7. import javax.imageio.ImageIO;
  8.  
  9. public class Hologram {
  10.  
  11.     public static int PRECISION = 2000000;
  12.     private BufferedImage hologram;
  13.  
  14.     public BufferedImage hologramize(File pBackground, File pHologram) throws IOException {
  15.         BufferedImage backgroundRead = ImageIO.read(pBackground);
  16.         BufferedImage hologramRead = ImageIO.read(pHologram);
  17.         if (backgroundRead.getWidth() != hologramRead.getWidth() || backgroundRead.getHeight() != hologramRead.getHeight()) {
  18.             throw new IllegalArgumentException("Le foto devono essere di dimensioni uguali.");
  19.         }
  20.         int rgbBack;
  21.         int rgbHolo;
  22.         Color holo;
  23.         Color back;
  24.         int r;
  25.         int g;
  26.         int b = 255;
  27.         boolean holoRgb = true;
  28.         for (int y = 0; y < backgroundRead.getHeight(); y++) {
  29.             for (int x = 0; x < backgroundRead.getWidth(); x++) {
  30.                 rgbBack = backgroundRead.getRGB(x, y);
  31.                 rgbHolo = hologramRead.getRGB(x, y);
  32.                 if (Math.abs(rgbBack - rgbHolo) > Hologram.PRECISION) {
  33.                     holo = new Color(rgbHolo);
  34.                     back = new Color(rgbBack);
  35.                     r = holo.getRed();
  36.                     g = holo.getGreen();
  37.                     if (!holoRgb) {
  38.                         r = back.getRed();
  39.                         g = back.getGreen();
  40.                     }
  41.                     holoRgb=!holoRgb;
  42.                     holo = new Color(r, g, b, 50);
  43.                     backgroundRead.setRGB(x, y, holo.getRGB());
  44.                 }
  45.             }
  46.         }
  47.         this.hologram = backgroundRead;
  48.         return this.hologram;
  49.     }
  50.  
  51.     public void writeTo(File pOut) throws IOException {
  52.         String outFile = pOut.getAbsolutePath();
  53.         String ext = outFile.substring(outFile.length() - 3);
  54.         if (!ext.equalsIgnoreCase("jpg") && !ext.equalsIgnoreCase("png") && !ext.equalsIgnoreCase("gif") && !ext.equalsIgnoreCase("jpeg") && !ext.equalsIgnoreCase("bmp")) {
  55.             ext = "jpg";
  56.             pOut = new File(outFile + "." + ext);
  57.         }
  58.         ImageIO.write(this.hologram, ext, pOut);
  59.     }
  60. }