document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. var imageThatHides = new SimpleImage("astrachan.jpg");//240 x 360
  2. var imageToHide = new SimpleImage("duvall.jpg");//200 x 300
  3. print("Before cropping the image imageThatHides:");
  4. print(imageThatHides);
  5. print("Before cropping the image imageToHide:");
  6. print(imageToHide);
  7. var smallerPicture = whichOneIsSmaller(imageThatHides, imageToHide);
  8. var desiredWidth = smallerPicture.getWidth();
  9. var desiredHeight = smallerPicture.getHeight();
  10. imageThatHides = crop(imageThatHides, desiredWidth, desiredHeight);
  11. print("After cropping the image imageThatHides:");
  12. print(imageThatHides);
  13. imageToHide = crop(imageToHide, desiredWidth, desiredHeight);
  14. print("After cropping the image imageToHide:");
  15. print(imageToHide);
  16. print("Before applying the chopToHide function to the image imageThatHides:");
  17. print(imageThatHides);
  18.  
  19. imageThatHides = chopToHide(imageThatHides);
  20.  
  21. print("After applying the chopToHide function to the image imageThatHides:");
  22. print(imageThatHides);
  23.  
  24. print("Before applying the shift function to the image imageToHide:");
  25. print(imageToHide);
  26. //Call the shift function on the image you want to hide to prepare it for hiding.
  27. imageToHide = shift(imageToHide);
  28. print("After applying the shift function to the image imageToHide:");
  29. print(imageToHide);
  30. //Now combining the two images
  31. var imageWithInImage = combine(imageToHide, imageThatHides);
  32. print("After hiding the image imageToHide inside the image imageThatHides:");
  33. print("The image below has an image hidden inside it.");
  34. print(imageWithInImage);
  35. function combine(imageToHide, imageThatHides){
  36.     var combinedImage = new SimpleImage(imageToHide.getWidth(), imageToHide.getHeight());
  37.     for(var imageThatHidesPixel of imageThatHides.values()){
  38.         var x = imageThatHidesPixel.getX();
  39.         var y = imageThatHidesPixel.getY();
  40.         var imageToHidePixel = imageToHide.getPixel(x, y);
  41.         var combinedPixel = combinedImage.getPixel(x, y);
  42.         var red = add(imageThatHidesPixel.getRed(), imageToHidePixel.getRed());
  43.         var green = add(imageThatHidesPixel.getGreen(), imageToHidePixel.getGreen());
  44.         var blue = add(imageThatHidesPixel.getBlue(), imageToHidePixel.getBlue());
  45.         combinedPixel.setRed(red);
  46.         combinedPixel.setGreen(green);
  47.         combinedPixel.setBlue(blue);
  48.     }
  49.     return combinedImage;
  50. }
  51.  
  52. function add(num1, num2){
  53.     var result = num1 + num2;
  54.     if(result <= 255){
  55.         return result;
  56.     }else{
  57.         return 255;
  58.     }
  59. }
  60.  
  61. //Prepare the imageToHide by shifting the left most half of the bits to the right and replacing the leftmost half of the bits to 0.
  62. function shift(oldImage){
  63.     var newImage = new SimpleImage(oldImage.getWidth(), oldImage.getHeight());
  64.     for(var oldPixel of oldImage.values()){
  65.         var x = oldPixel.getX();
  66.         var y = oldPixel.getY();
  67.         var newPixel = newImage.getPixel(x, y);
  68.         newPixel.setRed( Math.floor(oldPixel.getRed()/16) );
  69.         newPixel.setGreen( Math.floor(oldPixel.getGreen()/16) );
  70.         newPixel.setBlue( Math.floor(oldPixel.getBlue()/16) );
  71.     }
  72.     return newImage;
  73. }
  74. //Type in the shift function from the lesson. How well did you understand it? Can you write it without looking at the code from the lesson?
  75.  
  76. function whichOneIsSmaller(image1, image2){
  77.     var smallerInHeight;
  78.     var smallerInWidth;
  79.     if(image1.getWidth() <= image2.getWidth()){
  80.         smallerInWidth = image1;
  81.     }else{
  82.         smallerInWidth = image2;
  83.     }
  84.     if(image1.getHeight() <= image2.getHeight()){
  85.         smallerInHeight = image1;
  86.     }else{
  87.         smallerInHeight = image2;
  88.     }
  89.     if(smallerInHeight === smallerInWidth){
  90.         return smallerInWidth;//Both pics have the same height and width
  91.     }else{
  92.         //Decide on the basis of the width which one is smaller pic.
  93.         if(smallerInHeight.getWidth() <= smallerInWidth.getWidth()){
  94.             return smallerInHeight;
  95.         }else{
  96.             return smallerInWidth;
  97.         }
  98.     }
  99. }
  100. function crop(image, width, height){
  101.     var newImage = new SimpleImage(width, height);
  102.     for(var pixel of newImage.values()){
  103.         var x = pixel.getX();
  104.         var y = pixel.getY();
  105.         var p = image.getPixel(x,y);
  106.         pixel.setRed(p.getRed());
  107.         pixel.setGreen(p.getGreen());
  108.         pixel.setBlue(p.getBlue());
  109.     }
  110.     return newImage;
  111. }
  112. function chopToHide(image){
  113.     for(var pixel of image.values()){
  114.         pixel.setRed(pixelChange(pixel.getRed()));
  115.         pixel.setGreen(pixelChange(pixel.getGreen()));
  116.         pixel.setBlue(pixelChange(pixel.getBlue()));
  117.     }
  118.     return image;
  119. }
  120. function pixelChange(pixelValue){
  121.     return Math.floor(pixelValue/16) * 16;
  122. }
');