Advertisement
Guest User

SteganoJava

a guest
Dec 9th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.52 KB | None | 0 0
  1. package com.stegano;
  2.  
  3. import javax.imageio.ImageIO;
  4. import java.awt.*;
  5. import java.awt.image.BufferedImage;
  6. import java.io.File;
  7. import java.io.IOException;
  8. import java.io.UnsupportedEncodingException;
  9.  
  10. public class Main {
  11.  
  12.     public static BufferedImage textToImage(String text) throws UnsupportedEncodingException {
  13.         String contents = text;
  14.         byte[] bContents = contents.getBytes("UTF-8");
  15.         int dimensions = (int) Math.ceil(Math.sqrt(bContents.length)) + 2;
  16.  
  17.         BufferedImage bmp = new BufferedImage(dimensions, dimensions, BufferedImage.TYPE_INT_RGB);
  18.  
  19.         int currentIndex = 0;
  20.         for (int y = 0; y < dimensions; y++) {
  21.             for (int x = 0; x < dimensions; x++) {
  22.  
  23.                 if (currentIndex < bContents.length) {
  24.  
  25.  
  26.                     int r = bContents[currentIndex++];
  27.                     int g = 0;
  28.                     int b = 0;
  29.  
  30.                     int rgb = (r << 16) | (g << 8) | b;
  31.  
  32.  
  33.                     bmp.setRGB(x, y, rgb);
  34.                 } else {
  35.                     break;
  36.                 }
  37.  
  38.             }
  39.         }
  40.  
  41.         return bmp;
  42.  
  43.     }
  44.  
  45.  
  46.     public static String imageToText(BufferedImage img) throws UnsupportedEncodingException {
  47.         int dimension = img.getHeight();
  48.         byte[] output = new byte[dimension * dimension];
  49.         int currentIndex = 0;
  50.         for (int y = 0; y < dimension; y++) {
  51.             for (int x = 0; x < dimension; x++) {
  52.                 try {
  53.                     int rgb = img.getRGB(x, y);
  54.                     //byte r = (byte) ((rgb >> 16) & 0xff);
  55.                     byte r = (byte)new Color(rgb).getRed();
  56.  
  57.                     output[currentIndex++] = r;
  58.                 } catch (Exception e) {
  59.                     break;
  60.                 }
  61.  
  62.             }
  63.         }
  64.  
  65.         String s = new String(output, "UTF-8");
  66.         return s;
  67.     }
  68.  
  69.  
  70.     public static void main(String[] args) throws IOException {
  71.  
  72.         try {
  73.  
  74.  
  75.             File f = new File("MyFile.png");
  76.  
  77.             String input = "\n" +
  78.                     "\n" +
  79.                     "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed egestas commodo ipsum, ac scelerisque erat consequat quis. Nam quis sapien tristique, posuere velit et, molestie risus. Vestibulum ut erat at mi consequat faucibus. Morbi ipsum felis, vehicula ac neque nec, consectetur sollicitudin felis. Vivamus non libero vel sapien finibus consequat. Praesent est est, tempus a dui ac, tempus feugiat ipsum. Integer id pharetra diam. Aenean dictum tempor ligula, at porttitor quam maximus et. Nulla ipsum lorem, dictum ut efficitur sed, elementum condimentum purus. Sed ut tortor mauris. Quisque congue sed tellus eu vehicula. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam arcu nisl, volutpat sed massa sed, condimentum dapibus purus. Vestibulum vel nisl neque. Vestibulum mollis fermentum sem at suscipit.\n" +
  80.                     "\n" +
  81.                     "Mauris erat lorem, tempor sed maximus nec, pulvinar eget risus. Nullam suscipit eros et leo efficitur, at convallis sem vehicula. Etiam sollicitudin, erat eget volutpat aliquet, arcu tellus posuere libero, eget finibus tortor metus at dui. In sagittis euismod nunc in aliquam. Fusce sit amet consequat mi. Morbi lectus libero, rutrum laoreet tristique ac, faucibus ut justo. Fusce sodales laoreet congue. Pellentesque vel quam convallis, suscipit orci et, porttitor purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu erat facilisis, tincidunt urna at, ultrices elit. Cras quis dui vestibulum, auctor sapien vel, vehicula nulla. Mauris convallis quam a purus finibus, at aliquet nulla lacinia. Vestibulum ante sapien, rhoncus ut lobortis vel, dictum quis eros.\n" +
  82.                     "\n" +
  83.                     "In efficitur pellentesque nibh quis dignissim. Nullam elementum hendrerit lectus non tincidunt. Nulla feugiat odio nunc, non varius neque accumsan ut. Maecenas risus ipsum, cursus quis ornare non, pellentesque nec libero. Proin rhoncus pulvinar sem, sit amet blandit erat hendrerit consequat. Maecenas blandit ipsum at est luctus, non lobortis ante sagittis. Maecenas id purus fermentum, aliquet orci et, faucibus ex. Quisque consequat dignissim massa, at porttitor turpis malesuada a. Quisque sit amet mauris consectetur, vehicula velit eu, molestie tortor. Aliquam egestas accumsan quam vitae suscipit. Vestibulum sit amet augue vitae nisl semper ornare. Aliquam ipsum nisi, semper eget mi eget, hendrerit bibendum orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc sit amet vulputate tellus. Ut egestas vitae purus vitae ullamcorper. Fusce rutrum, orci et eleifend eleifend, erat turpis egestas dolor, ac auctor elit turpis ut orci.\n" +
  84.                     "\n" +
  85.                     "Proin a dictum nisl. Quisque hendrerit velit lacus, sit amet blandit sapien sagittis laoreet. Maecenas nec nulla rutrum lacus aliquam pretium in eu massa. Aliquam erat volutpat. Duis tempus lectus mi, ac vehicula purus mollis sit amet. Nam et sem dolor. Integer porttitor nulla at ipsum vehicula, ut euismod enim maximus. Ut a vehicula est, vel porttitor massa. Mauris pretium rhoncus velit eu fermentum. Cras et turpis posuere, pretium tortor sit amet, bibendum mauris. Vestibulum sit amet sagittis erat. Vestibulum ac lectus felis.\n" +
  86.                     "\n" +
  87.                     "Morbi rhoncus elementum sollicitudin. Morbi feugiat faucibus neque, sit amet volutpat metus lacinia consequat. Nunc imperdiet quam elit, nec maximus libero fringilla quis. Maecenas vulputate suscipit nisi in ultrices. Fusce ut tellus diam. Aliquam condimentum, nibh ut facilisis pulvinar, augue massa porttitor urna, sit amet suscipit nibh erat quis leo. Aliquam a fermentum elit. Curabitur fermentum, nisl vitae pretium sagittis, leo erat facilisis lacus, a ornare lorem ante eget velit. Suspendisse ut sapien nec justo egestas vehicula ut ut felis. Morbi consequat sapien et rutrum malesuada. Vivamus eget ante in sapien commodo vestibulum quis in lacus. Quisque ut lacinia nulla, sit amet ullamcorper tortor. Nulla mi urna, ultrices a elit at, feugiat sollicitudin neque. Ut sagittis ante non eros molestie, sed aliquet lorem interdum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel felis volutpat, vehicula massa vitae, egestas eros.\n" +
  88.                     "\n" +
  89.                     "Morbi ut vestibulum diam, et aliquet sem. Aenean vehicula massa ac diam malesuada tempus. Vestibulum dapibus diam non dui sollicitudin, et mollis ante accumsan. Nunc ullamcorper hendrerit eros pulvinar efficitur. Vestibulum at condimentum libero, eget blandit massa. Vivamus a facilisis mi. Maecenas tincidunt eget ipsum vel aliquet. Duis ut fringilla metus, ac varius tellus. Phasellus risus est, dapibus id felis vel, sollicitudin ultrices diam. Mauris dignissim eros in odio facilisis consectetur. Vivamus vel sem id nulla consequat vulputate. Quisque est sem, varius sodales iaculis id, porttitor vel purus. Aliquam ex nisl, malesuada ac enim nec, blandit commodo leo. Vivamus tristique iaculis tellus, non consequat ante placerat vitae.\n" +
  90.                     "\n" +
  91.                     "Quisque non faucibus lorem. Nullam iaculis pharetra bibendum. Nulla vulputate vel diam id blandit. Fusce ac orci tempor, mollis neque vitae, tempus tellus. Mauris tristique nibh sit amet lorem porttitor commodo. Nam a mattis orci. Phasellus dolor dolor, interdum et justo dignissim, vehicula feugiat urna. Sed sagittis efficitur nunc, eget imperdiet arcu eleifend vestibulum. Integer feugiat, dui non fringilla tristique, magna enim pellentesque sem, eget interdum odio quam ut nulla. Ut quis risus enim. Suspendisse pretium ultricies eros nec hendrerit. Praesent et ipsum ac lectus posuere suscipit. Nullam sagittis consequat turpis quis dictum. In hac habitasse platea dictumst. Nulla nisi est, fermentum vitae velit sit amet, viverra efficitur velit.\n" +
  92.                     "\n" +
  93.                     "Nam nunc est, egestas sed odio ut, gravida ultricies magna. Nam malesuada ex vel augue vestibulum rhoncus. Curabitur efficitur blandit velit, in pretium enim condimentum non. Quisque id ex ultrices, consequat turpis vel, malesuada magna. Nunc et mattis nisl. Etiam dapibus varius ultrices. Fusce gravida nec urna sed efficitur. Vestibulum ut quam dolor. Suspendisse quis quam eget risus placerat porta vitae nec nibh. Suspendisse ac egestas sem. Curabitur dapibus auctor ullamcorper. Suspendisse commodo augue id nulla feugiat ullamcorper. Curabitur nec ex mollis, cursus elit id, efficitur nisl.\n" +
  94.                     "\n" +
  95.                     "Phasellus ipsum orci, faucibus et iaculis vitae, gravida nec magna. Aliquam eu libero vehicula dui scelerisque facilisis. Nulla ut metus molestie, mollis justo a, faucibus sapien. Nulla in dolor tortor. In hendrerit lorem tellus, sit amet tincidunt leo condimentum porttitor. Pellentesque quis commodo massa, id finibus urna. Nunc eu varius nisi, sit amet vulputate libero. Morbi vulputate, magna id sollicitudin luctus, urna nibh dictum sapien, vel imperdiet ante orci vitae justo. Donec ultricies risus sed nisi ultrices, ut sodales odio aliquam. Donec vitae volutpat quam, non luctus magna. ";
  96.  
  97.             BufferedImage img2 = textToImage(input);
  98.  
  99.             ImageIO.write(img2, "PNG", f);
  100.  
  101.  
  102.         } catch (Exception e) {
  103.             e.printStackTrace();
  104.         }
  105.  
  106.         BufferedImage image = ImageIO.read(new File("MyFile.png"));
  107.  
  108.         String output = imageToText(image);
  109.         System.out.println(output);
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement