Advertisement
daniv1

Untitled

Apr 28th, 2018
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.09 KB | None | 0 0
  1. package lab4;
  2.  
  3. import javax.imageio.ImageIO;
  4. import java.awt.image.BufferedImage;
  5. import java.io.File;
  6. import java.io.IOException;
  7.  
  8. public class Rast {
  9.  
  10.  
  11.     public static void main(String[] args) throws IOException {
  12.  
  13.         BufferedImage img = ImageIO.read(new File("in.png"));
  14.  
  15.         int height = img.getHeight();
  16.         int width = img.getWidth();
  17.         int k  = 0 ;
  18.         int z = 0 ;
  19.         byte[][] alpha = new byte[width][height];
  20.         byte[][] red = new byte[width][height];
  21.         byte[][] green = new byte[width][height];
  22.         byte[][] blue = new byte[width][height];
  23.  
  24.         for (int x = 0; x < width; x++) {
  25.             for (int y = 0; y < height; y++) {
  26.                 int color = img.getRGB(x, y);
  27.                
  28.                 alpha[x][y] = (byte) (color >> 24);
  29.                 red[x][y] = (byte) (color >> 16);
  30.                 green[x][y] = (byte) (color >> 8);
  31.                 blue[x][y] = (byte) (color);
  32.             }
  33.         }
  34.  // --------------------------------------------
  35.         // обробка першого зображення ( прямокутники )
  36.        for (int j = 0; j < width; j++) {
  37.            
  38.             for (int i = 0; i < height; i++) {
  39.                
  40.                 if (j>0 && j< 50 && i>0 && i<100 ){
  41.                   red[j][i] = (byte) 100;
  42.                   green[j][i] = (byte) 0;
  43.                   blue[j][i] = (byte) 0;          
  44.                 }
  45.                 else if( j > 65 && j < 115 && i>0 && i<100 )
  46.                 {
  47.                     red[j][i] = (byte) 0;
  48.                  
  49.                     green[j][i] = (byte) 100;
  50.                  
  51.                     blue[j][i] = (byte) 0;
  52.                  }  
  53.                 else if(  j > 130 && j < 180 && i>0 && i<100  )
  54.                 {
  55.    
  56.             red[j][i] = (byte) 0;
  57.            
  58.             green[j][i] = (byte) 0;
  59.          
  60.             blue[j][i] = (byte) 100;
  61.    }
  62.                 else {
  63.                     red[j][i] = (byte) 255;
  64.                    
  65.                     green[j][i] = (byte) 255;
  66.                    
  67.                     blue[j][i] = (byte) 255;
  68.                 }
  69.             }
  70.        }
  71.    
  72.   BufferedImage outImg = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
  73.  
  74.         for (int x = 0; x < width; x++) {
  75.             for (int y = 0; y < height; y++) {
  76.                 int color = blue[x][y];
  77.                 color += (green[x][y] << 8);
  78.                 color += (red[x][y] << 16);
  79.                color += (alpha[x][y] << 24);
  80.  
  81.                 outImg.setRGB(x, y, color);
  82.             }
  83.         }
  84.  
  85.         ImageIO.write(outImg, "png", new File("out img1.png"));
  86.      
  87. //--------------------------------------------
  88.        // створено перше зображення
  89.  
  90.        
  91.        
  92.        
  93.        
  94.        
  95.         BufferedImage img2 = ImageIO.read(new File("in2.png"));
  96.  
  97.        height = img2.getHeight();
  98.          width = img2.getWidth();
  99.      
  100.         for (int x = 0; x < width; x++) {
  101.             for (int y = 0; y < height; y++) {
  102.                 int color = img2.getRGB(x, y);
  103.                
  104.                 alpha[x][y] = (byte) (color >> 24);
  105.                 red[x][y] = (byte) (color >> 16);
  106.                 green[x][y] = (byte) (color >> 8);
  107.                 blue[x][y] = (byte) (color);
  108.             }
  109.         }
  110.  // --------------------------------------------
  111.         for (int j = 0; j < width; j++) {
  112.            
  113.             for (int i = 0; i < height; i++) {
  114.                
  115.                  // red[j][i] = 0;
  116.                          
  117.                 }
  118.            
  119.         }
  120.   BufferedImage outImg2 = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
  121.  
  122.         for (int x = 0; x < width; x++) {
  123.             for (int y = 0; y < height; y++) {
  124.                 int color = 0;//blue[x][y];
  125.                color += (green[x][y] << 8);
  126.                 color += (red[x][y] << 16);
  127.                color += (alpha[x][y] << 24);
  128.  
  129.                 outImg2.setRGB(x, y, color);
  130.             }
  131.         }
  132.  
  133.         ImageIO.write(outImg2, "png", new File("out img 2.png"));
  134.        
  135.        
  136.        
  137.        
  138.        
  139.        
  140.        
  141.        
  142.        
  143.        // градації сірого
  144.        
  145.         byte[][] Y = new byte[width][height];
  146.        
  147.        
  148.         BufferedImage img3 = ImageIO.read(new File("in2.png"));
  149.  
  150.        height = img3.getHeight();
  151.          width = img3.getWidth();
  152.      
  153.         for (int x = 0; x < width; x++) {
  154.             for (int y = 0; y < height; y++) {
  155.                 int color = img3.getRGB(x, y);
  156.                
  157.                 alpha[x][y] = (byte) (color >> 24);
  158.                 red[x][y] = (byte) (color >> 16);
  159.                 green[x][y] = (byte) (color >> 8);
  160.                 blue[x][y] = (byte) (color);
  161.             }
  162.         }
  163.  // --------------------------------------------
  164.         for (int j = 0; j < width; j++) {
  165.            
  166.             for (int i = 0; i < height; i++) {
  167.                
  168.                 Y[j][i]=(byte) (0.3 * red[j][i] + 0.6 * green[j][i] +0.1 * blue[j][i]);
  169.                   red[j][i] = Y[j][i];
  170.                   blue[j][i] = Y[j][i];
  171.                   green[j][i] = Y[j][i];
  172.                          
  173.                 }
  174.            
  175.         }
  176.   BufferedImage outImg3 = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
  177.  
  178.         for (int x = 0; x < width; x++) {
  179.             for (int y = 0; y < height; y++) {
  180.                 int color = blue[x][y];
  181.                 color += (green[x][y] << 8);
  182.                 color += (red[x][y] << 16);
  183.                color += (alpha[x][y] << 24);
  184.  
  185.                 outImg3.setRGB(x, y, color);
  186.             }
  187.         }
  188.  
  189.         ImageIO.write(outImg3, "png", new File("out img 3.png"));
  190.        
  191.        
  192.         // транспонування
  193.        
  194.        
  195.        
  196.        
  197.        
  198.        
  199.         BufferedImage img4 = ImageIO.read(new File("in2.png"));
  200.  
  201.        height = img4.getHeight();
  202.          width = img4.getWidth();
  203.      
  204.         for (int x = 0; x < width; x++) {
  205.             for (int y = 0; y < height; y++) {
  206.                 int color = img4.getRGB(x, y);
  207.                
  208.                 alpha[x][y] = (byte) (color >> 24);
  209.                 red[x][y] = (byte) (color >> 16);
  210.                 green[x][y] = (byte) (color >> 8);
  211.                 blue[x][y] = (byte) (color);
  212.             }
  213.         }
  214.  // --------------------------------------------
  215.         byte [][] tempr = new byte[256][256];
  216.         byte [][] tempg = new byte[256][256];
  217.         byte [][] tempb = new byte[256][256];
  218.                          
  219.         for (int j = 0; j < width; j++) {
  220.            
  221.             for (int i = 0; i < height ; i++) {
  222.                
  223.                 tempr[j][i] = red[j][i];
  224.                 tempb[j][i] = blue[j][i];
  225.                 tempg[j][i] = green[j][i];
  226.             }
  227.         }
  228.         for (int j = 0; j < width  / 2; j++) {
  229.            
  230.             for (int i = 0; i < height  ; i++) {
  231.                  red[j][i] = (byte)(red[width - j - 1][i]) ;
  232.                  green[j][i] = blue[width - 1- j][i] ;
  233.                  blue[j][i] = green[width - 1 -j][i] ;
  234.                  blue[width - 1- j][i ] = tempb[j][i];
  235.                  green[width - 1 - j][i ] = tempg[j][i];
  236.                  red[width - j - 1][i] = tempr[j][i];
  237.                          
  238.                 }
  239.            
  240.         }
  241.   BufferedImage outImg4 = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
  242.  
  243.         for (int x = 0; x < width; x++) {
  244.             for (int y = 0; y < height; y++) {
  245.                 int color = blue[x][y];
  246.                 color += (green[x][y] << 8);
  247.                 color += (red[x][y] << 16);
  248.                color += (alpha[x][y] << 24);
  249.  
  250.                 outImg4.setRGB(x, y, color);
  251.             }
  252.         }
  253.  
  254.         ImageIO.write(outImg4, "png", new File("out img 4.png"));
  255.        
  256.        
  257.        
  258.         // 5 штука, яка накладає 2 зображення
  259.        
  260.         BufferedImage img5 = ImageIO.read(new File("in.png"));
  261.         BufferedImage img6 = ImageIO.read(new File("in3.png"));
  262.        
  263.  
  264.         height = img.getHeight();
  265.         width = img.getWidth();
  266.        
  267.         byte[][] alpha1 = new byte[width][height];
  268.         byte[][] red1 = new byte[width][height];
  269.         byte[][] green1 = new byte[width][height];
  270.         byte[][] blue1 = new byte[width][height];
  271.  
  272.         for (int x = 0; x < width; x++) {
  273.             for (int y = 0; y < height; y++) {
  274.                 int color = img5.getRGB(x, y);
  275.                
  276.                 alpha[x][y] = (byte) (color >> 24);
  277.                 red[x][y] = (byte) (color >> 16);
  278.                 green[x][y] = (byte) (color >> 8);
  279.                 blue[x][y] = (byte) (color);
  280.               int color2 = img6.getRGB(x, y);
  281.                
  282.                 alpha1[x][y] = (byte) (color2 >> 24);
  283.                 red1[x][y] = (byte) (color2 >> 16);
  284.                 green1[x][y] = (byte) (color2 >> 8);
  285.                 blue1[x][y] = (byte) (color2);
  286.             }
  287.         }
  288.         byte[][] tempa = new byte[width][height];
  289.  // --------------------------------------------
  290.    
  291.        for (int j = 0; j < width; j++) {
  292.            
  293.             for (int i = 0; i < height; i++) {
  294.                 tempr[j][i] = (byte) ((red[j][i] * red1[j][i]) / 200);
  295.                 tempb[j][i] = (byte) ((blue[j][i] * blue1[j][i]) / 200);
  296.                 tempg[j][i] = (byte) ((green[j][i] * green1[j][i]) / 200);
  297.                 tempa[j][i] = (byte) ((alpha[j][i] * alpha1[j][i]) / 200);
  298.                
  299.             }
  300.        }
  301.    
  302.   BufferedImage outImg5 = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
  303.  
  304.         for (int x = 0; x < width; x++) {
  305.             for (int y = 0; y < height; y++) {
  306.                 int color = tempb[x][y];
  307.                 color += (tempg[x][y] << 8);
  308.                 color += (tempr[x][y] << 16);
  309.                color += (tempa[x][y] << 24);
  310.                 outImg5.setRGB(x, y, color);
  311.             }
  312.         }
  313.  
  314.         ImageIO.write(outImg5, "png", new File("out img5.png"));
  315.         }
  316.    
  317. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement