📄 imagesizer.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 + -