Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var imageThatHides = new SimpleImage("astrachan.jpg");//240 x 360
- var imageToHide = new SimpleImage("duvall.jpg");//200 x 300
- print("Before cropping the image imageThatHides:");
- print(imageThatHides);
- print("Before cropping the image imageToHide:");
- print(imageToHide);
- var smallerPicture = whichOneIsSmaller(imageThatHides, imageToHide);
- var desiredWidth = smallerPicture.getWidth();
- var desiredHeight = smallerPicture.getHeight();
- imageThatHides = crop(imageThatHides, desiredWidth, desiredHeight);
- print("After cropping the image imageThatHides:");
- print(imageThatHides);
- imageToHide = crop(imageToHide, desiredWidth, desiredHeight);
- print("After cropping the image imageToHide:");
- print(imageToHide);
- print("Before applying the chopToHide function to the image imageThatHides:");
- print(imageThatHides);
- imageThatHides = chopToHide(imageThatHides);
- print("After applying the chopToHide function to the image imageThatHides:");
- print(imageThatHides);
- print("Before applying the shift function to the image imageToHide:");
- print(imageToHide);
- //Call the shift function on the image you want to hide to prepare it for hiding.
- imageToHide = shift(imageToHide);
- print("After applying the shift function to the image imageToHide:");
- print(imageToHide);
- //Now combining the two images
- var imageWithInImage = combine(imageToHide, imageThatHides);
- print("After hiding the image imageToHide inside the image imageThatHides:");
- print("The image below has an image hidden inside it.");
- print(imageWithInImage);
- function combine(imageToHide, imageThatHides){
- var combinedImage = new SimpleImage(imageToHide.getWidth(), imageToHide.getHeight());
- for(var imageThatHidesPixel of imageThatHides.values()){
- var x = imageThatHidesPixel.getX();
- var y = imageThatHidesPixel.getY();
- var imageToHidePixel = imageToHide.getPixel(x, y);
- var combinedPixel = combinedImage.getPixel(x, y);
- var red = add(imageThatHidesPixel.getRed(), imageToHidePixel.getRed());
- var green = add(imageThatHidesPixel.getGreen(), imageToHidePixel.getGreen());
- var blue = add(imageThatHidesPixel.getBlue(), imageToHidePixel.getBlue());
- combinedPixel.setRed(red);
- combinedPixel.setGreen(green);
- combinedPixel.setBlue(blue);
- }
- return combinedImage;
- }
- function add(num1, num2){
- var result = num1 + num2;
- if(result <= 255){
- return result;
- }else{
- return 255;
- }
- }
- //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.
- function shift(oldImage){
- var newImage = new SimpleImage(oldImage.getWidth(), oldImage.getHeight());
- for(var oldPixel of oldImage.values()){
- var x = oldPixel.getX();
- var y = oldPixel.getY();
- var newPixel = newImage.getPixel(x, y);
- newPixel.setRed( Math.floor(oldPixel.getRed()/16) );
- newPixel.setGreen( Math.floor(oldPixel.getGreen()/16) );
- newPixel.setBlue( Math.floor(oldPixel.getBlue()/16) );
- }
- return newImage;
- }
- //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?
- function whichOneIsSmaller(image1, image2){
- var smallerInHeight;
- var smallerInWidth;
- if(image1.getWidth() <= image2.getWidth()){
- smallerInWidth = image1;
- }else{
- smallerInWidth = image2;
- }
- if(image1.getHeight() <= image2.getHeight()){
- smallerInHeight = image1;
- }else{
- smallerInHeight = image2;
- }
- if(smallerInHeight === smallerInWidth){
- return smallerInWidth;//Both pics have the same height and width
- }else{
- //Decide on the basis of the width which one is smaller pic.
- if(smallerInHeight.getWidth() <= smallerInWidth.getWidth()){
- return smallerInHeight;
- }else{
- return smallerInWidth;
- }
- }
- }
- function crop(image, width, height){
- var newImage = new SimpleImage(width, height);
- for(var pixel of newImage.values()){
- var x = pixel.getX();
- var y = pixel.getY();
- var p = image.getPixel(x,y);
- pixel.setRed(p.getRed());
- pixel.setGreen(p.getGreen());
- pixel.setBlue(p.getBlue());
- }
- return newImage;
- }
- function chopToHide(image){
- for(var pixel of image.values()){
- pixel.setRed(pixelChange(pixel.getRed()));
- pixel.setGreen(pixelChange(pixel.getGreen()));
- pixel.setBlue(pixelChange(pixel.getBlue()));
- }
- return image;
- }
- function pixelChange(pixelValue){
- return Math.floor(pixelValue/16) * 16;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement