⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagesizer.java

📁 计算机图象处理的java源代码,可以实现图象的放大缩小等基本功能
💻 JAVA
字号:
package image;

//package   imagesizer; 

import   com.sun.image.codec.jpeg.JPEGCodec; 
import   com.sun.image.codec.jpeg.JPEGImageEncoder; 
import   java.awt.Graphics; 
import   java.awt.Image; 
import java.awt.Toolkit;
import   java.awt.image.BufferedImage; 
import java.awt.image.ImageObserver;
import java.awt.image.MemoryImageSource;
import java.awt.image.PixelGrabber;
import java.awt.image.Raster;
import   java.io.*; 
import   javax.imageio.ImageIO; 
import javax.swing.ImageIcon;

public    class   Imagesizer 
{ 

        int   wideth; 
        int   height; 
        
        public     Imagesizer() 
        { 
                wideth   =   0; 
                height   =   0; 
        } 

        public   void   imageSizer(String fileName) 
        { 
           // String   fileName   =   file.getName(); 
        	File file=new File(fileName);
            try 
                { 
                        BufferedImage   bufferedimage   =   ImageIO.read(file); //把wideth和height替换成想要的尺寸就可以了 
                        wideth   =   bufferedimage.getWidth(null); 
                        height   =   bufferedimage.getHeight(null); 
                  System.out.println("the hight of image is:"+ height);
                  System.out.println("the wideth of image is:"+ wideth);
                    Raster rs=   bufferedimage.getData();
                  //  bufferedimage.
                     // rs.
                        BufferedImage   bufferedimage1   =   new   BufferedImage(wideth,   height,   1); 
                        bufferedimage1.getGraphics().drawImage(bufferedimage,   0,   0,   wideth,   height,   null); 
                        FileOutputStream   fileoutputstream   =   new   FileOutputStream( "d:\\003.jpg"); 
                        JPEGImageEncoder   jpegimageencoder   =   JPEGCodec.createJPEGEncoder(fileoutputstream); 
                        jpegimageencoder.encode(bufferedimage1); 
                        System.out.print(wideth   +   ": "   +   height); 
                        fileoutputstream.close(); 
                } 
                catch(Exception   exception) 
                { 
                        System.out.println(exception); 
                } 
        } 
        
        public int [] getdata(Image img, int start_x, int start_y, int width, int height) {//x,y 为起始位置,w,h 为宽和高
            int[] pixels = new int[width * height];
            PixelGrabber pg = new PixelGrabber(img, start_x, start_y, width, height, pixels, 0, width);
            try {
                pg.grabPixels();
            } catch (InterruptedException e) {
                System.err.println("interrupted waiting for pixels!");
               // return;
            }
            for(int i=0;i<height;i++)
            {
           // int [] rowdata=new int [width];
            	for(int j=0;j<width;j++)
            	{
            		System.out.println("celldata:"+pixels[i*height+width]);
            	}
            	
            }
           return  pixels;
     }       
        
        public void handlesinglepixel(int x, int y, int pixel) {//读取 alpha  red   green   blue 的值
            int alpha = (pixel >> 24) & 0xff;
            int red   = (pixel >> 16) & 0xff;
            int green = (pixel >>  8) & 0xff;
            int blue  = (pixel      ) & 0xff;
            // Deal with the pixel as necessary...
     }

        public int  graysinglepixel(int x, int y, int pixel) {//读取 alpha  red   green   blue 的值
            int alpha = (pixel >> 24) & 0xff;
            int red   = (pixel >> 16) & 0xff;
            int green = (pixel >>  8) & 0xff;
            int blue  = (pixel      ) & 0xff;
            int gray=(int)( 0.30*red+0.59*green+0.11*blue);    
            return gray;//Gray=0.30*R+0.59*G+0.11*B
            // Deal with the pixel as necessary...
     }
        
        public int[] grayImage(Image img, int x, int y, int w, int h)
        {
        	 int[] pixels = new int[w * h];
        	 int [] gray_data=new int[w * h];
             PixelGrabber pg = new PixelGrabber(img, x, y, w, h, pixels, 0, w);
             try {
                 pg.grabPixels();
             } catch (InterruptedException e) {
                 System.err.println("interrupted waiting for pixels!");
               //  return;
             }
             if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
                 System.err.println("image fetch aborted or errored");
                // return;
             }
             for (int j = 0; j < h; j++) {
                 for (int i = 0; i < w; i++) {
                	int gray=graysinglepixel(x+i, y+j, pixels[j * w + i]);
                	pixels[w*j+i]=(255<<24)|(gray<<16)|(gray<<8)|gray;
                	//gray_data[j * w + i]=cell_gray_value;
                 }
             }
             return  pixels;
        }
        
     public Image createImage(int [] nData , int  nWidth,int nHeight )   
     {
        Toolkit kit = Toolkit.getDefaultToolkit();
       Image  image = kit.createImage(new MemoryImageSource(nWidth, nHeight,
                nData, 0, nWidth));
       
       BufferedImage   bufferedimage1   =   new   BufferedImage(nWidth,   nHeight,   1); 
       bufferedimage1.getGraphics().drawImage(image,   0,   0,   nWidth,   nHeight,   null); 
       try{
       FileOutputStream   fileoutputstream   =   new   FileOutputStream( "d:\\005.bmp"); 
       JPEGImageEncoder   jpegimageencoder   =   JPEGCodec.createJPEGEncoder(fileoutputstream); 
      // BMPCodec.
       jpegimageencoder.encode(bufferedimage1); 
       System.out.print(nWidth   +   ": "   +   nHeight); 
       fileoutputstream.close(); 
       } catch(Exception e)
       {  e.printStackTrace();}
       return image;
     }
     public void handlepixels(Image img, int x, int y, int w, int h) {//x,y 为起始位置,w,h 为宽和高
            int[] pixels = new int[w * h];
            PixelGrabber pg = new PixelGrabber(img, x, y, w, h, pixels, 0, w);
            try {
                pg.grabPixels();
            } catch (InterruptedException e) {
                System.err.println("interrupted waiting for pixels!");
                return;
            }
            if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
                System.err.println("image fetch aborted or errored");
                return;
            }
            for (int j = 0; j < h; j++) {
                for (int i = 0; i < w; i++) {
                    handlesinglepixel(x+i, y+j, pixels[j * w + i]);
                }
            }
     }



        public static void main(String[] args) {
        	Imagesizer  test=new Imagesizer ();
        	String fileName="003.jpg";
        	File file=new File(fileName);
        	Toolkit toolkit=Toolkit.getDefaultToolkit();
        	Image image = toolkit.getImage("003.jpg");//图象要放到 程序所在项目的文件夹中才能打开;
			//ImageIcon a = new ImageIcon("fileName");
        	try{
        	
        	 BufferedImage   bufferedimage   =   ImageIO.read(file);
        	 int width=bufferedimage.getWidth(null);
        	 int height=bufferedimage.getHeight(null);
        		/*
        	 System.out.println("wieth:"+width+"height:"+height);
			test.getdata(bufferedimage,0,0,width,height);
			//Toolkit.getDefaultToolkit().beep();
		*/
        		
        	int data[]=	test.grayImage(image,0,0,width,height);
        	test.createImage(data,width,height);
        	test.imageSizer(fileName);
        	}catch(IOException e)
        	{
        		e.printStackTrace();
        	}
        
        }
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -