📄 basicimage.java
字号:
package image;
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 abstract class BasicImage {
int wideth=0;
int height=0;
String fileName="";
Image image=null;
File file=null;
BufferedImage bufferedimage=null;
int [] imageData=null;
Image imageProcessed=null;
public BasicImage() {
super();
// TODO 自动生成构造函数存根
}
public BasicImage(String fileName) { //初始化处理,得到图象的 宽度、高度、image以及imageData等基本信息
System.out.println("-------------- BasicImage(String fileName)");
this.fileName=fileName.trim();
file=new File(fileName);
try
{
bufferedimage = ImageIO.read(file); //把wideth和height替换成想要的尺寸就可以了
wideth = bufferedimage.getWidth(null);
height = bufferedimage.getHeight(null);
System.out.println("-----------------wideth of image is:"+wideth);
System.out.println("-----------------height of image is:"+height);
Toolkit toolkit=Toolkit.getDefaultToolkit();
image = toolkit.getImage(this.fileName); //生成image
imageData=this.getdata();
// System.out.println("----------------imageData"+imageData);
}
catch(Exception exception)
{
System.out.println(exception);
exception.printStackTrace();
}
// TODO 自动生成构造函数存根
}
public int [] getdata() {//得到待处理图象的象素数据
System.out.println("--------------getdata()");
int[] pixels = new int[wideth * height];
PixelGrabber pg = new PixelGrabber(image, 0, 0, wideth, height, pixels, 0, wideth);
try {
pg.grabPixels();
} catch (InterruptedException e) {
System.err.println("interrupted waiting for pixels!");
// return;
}
/*
for(int i=0;i<height;i++)
{
for(int j=0;j<wideth;j++)
{
System.out.println("celldata:"+pixels[i*height+wideth]);
}
}
*/
return pixels;
}
public Image createImage(int [] nData ) //根据经过处理的 图象数据 创建图象,但只是在内存中创建
{
System.out.println("--------------createImage");
Toolkit kit = Toolkit.getDefaultToolkit();
Image image = kit.createImage(new MemoryImageSource(wideth, height,
nData, 0, wideth));
imageProcessed= image;
return imageProcessed;
}
public void saveImage(String saveImageName) //保存已经经过处理的图象
//例如 "d:\\005.bmp"
{
System.out.println("--------------saveImage");
int nWidth=this.wideth;
int nHeight=this.height;
BufferedImage bufferedimage1 = new BufferedImage(nWidth, nHeight, 1);
// bufferedimage1.getGraphics().drawImage(this.createImage(this.imageData), 0, 0, nWidth, nHeight, null);
bufferedimage1.getGraphics().drawImage(imageProcessed, 0, 0, nWidth, nHeight, null);
try{
FileOutputStream fileoutputstream = new FileOutputStream( saveImageName.trim());
JPEGImageEncoder jpegimageencoder = JPEGCodec.createJPEGEncoder(fileoutputstream);
// BMPCodec.
jpegimageencoder.encode(bufferedimage1);
fileoutputstream.close();
} catch(Exception e)
{ e.printStackTrace();}
}
public abstract Image imageProcess();
public abstract void saveImageAfterProcess();
public abstract void showImageAfterProcess();
public static void main(String[] args) {
// TODO 自动生成方法存根
//BasicImage zyy=new BasicImage();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -