前言我们来介绍一下Java语言中的一个基础项目图像处理工具。接下来我们对此进行编程packageshj26122;importjavax.swing.*;importjavax.swing.filechooser.FileNameExtensionFilter;importjava.awt.*;publicclassPixelUi{publicvoidinitUi(){JFramejfnewJFrame();jf.setSize(900,900);jf.setTitle(图像处理1.0);jf.setLocationRelativeTo(null);jf.setDefaultCloseOperation(3);JPanelcenterPanelnewJPanel();jf.add(centerPanel,BorderLayout.CENTER);JPanelnorthPanelnewJPanel();northPanel.setBackground(Color.BLACK);northPanel.setPreferredSize(newDimension(0,40));jf.add(northPanel,BorderLayout.NORTH);PixelListenerlistenernewPixelListener(centerPanel);String[]name{打开,原图,马赛克,旋转,灰度,镜面翻转,缩放,复古,保存};for(inti0;iname.length;i){JButtonjbunewJButton(name[i]);northPanel.add(jbu);jbu.addActionListener(listener);}centerPanel.addMouseWheelListener(listener);jf.setVisible(true);GraphicsgcenterPanel.getGraphics();listener.setG(g);}publicstaticvoidmain(String[]args){PixelUiuinewPixelUi();ui.initUi();}}首先我们需要导入所需要的swing和awt包用于创建图形用户界面组件和处理图形操作然后我们需要定义一个名为PixelUi的公共类然后再进行对用户界面的创建接下来我们还需要设置一些按钮以及我们需要为这些按钮设置监听器最后我们需要定义main方法作为程序的入口然后我们需要定义一个实例ui以及调用ui中的initUi方法启动用户界面。接下来我们展示第二个公共类packageshj26122;importjavax.imageio.ImageIO;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.image.BufferedImage;importjava.awt.event.MouseWheelEvent;importjava.awt.event.MouseWheelListener;importjava.io.File;importjava.io.IOException;importjavax.swing.*;importjavax.swing.filechooser.FileNameExtensionFilter;publicclassPixelListenerimplementsActionListener,MouseWheelListener{privateGraphicsg;privateFilterImagefilter;privateint[][]PixelArr;privateStringname;privateJPanelcenterPanel;publicPixelListener(JPanelcenterPanel){this.centerPanelcenterPanel;StringpathD:\\图片\\【哲风壁纸】下雪-冬季雪景(2).png;PixelArrgetPixel(newFile(path));}publicvoidsetG(Graphicsg){this.gg;filternewFilterImage(g);}publicvoidactionPerformed(ActionEvente){namee.getActionCommand();System.out.println(点击按钮!);switch(name){case原图:filter.drawPixel1(PixelArr);break;case马赛克:filter.mosaic(PixelArr);break;case旋转:PixelArrfilter.rotate(PixelArr);filter.drawPixel(PixelArr);break;case灰度:filter.grey(PixelArr);break;case打开:JFileChooserjfcnewJFileChooser();FileNameExtensionFilterfilternewFileNameExtensionFilter(图片文件,jpg,png,bmp);jfc.setFileFilter(filter);jfc.showOpenDialog(null);Filefilejfc.getSelectedFile();PixelArrgetPixel(file);break;}}publicvoidmouseWheelMoved(MouseWheelEvente){introtatee.getWheelRotation();if(缩放.equals(name)){if(rotate0){filter.setPixelSize(filter.getPixelSize()-20);}else{filter.setPixelSize(filter.getPixelSize()20);}filter.filterImage(PixelArr);}}publicint[][]getPixel(Filefile){BufferedImagebufferedImagenull;try{bufferedImageImageIO.read(file);}catch(IOExceptione){thrownewRuntimeException(e);}inthbufferedImage.getHeight();intwbufferedImage.getWidth();int[][]PixelArrnewint[h][w];for(inti0;ih;i){for(intj0;jw;j){intPixelbufferedImage.getRGB(j,i);PixelArr[i][j]Pixel;}}returnPixelArr;}}与上面一样我们首先需要导入所需的Java标准库和第三方库包括图像处理、事件监听、文件操作等功能。然后我们还需要定义一个名为PixelListener的公共类实现两个接口用于处理按钮点击和鼠标滚轮事件。接下来我们需要定义几个对象用于实现功能我们还需要用构造方法接收一个JPanel参数并赋值给centerPanel我们还需要将图像文件加载并将其像素储存在PixelArr中随后我们还需要设置Graphics对象。随后我们还需要处理按钮点击事件随后再处理鼠标滚轮事件我们需要判断是否处于缩放然后根据滚轮方向调整像素块大小请重新绘制图像最后我们需要读取图像像素数据。接下来我们展示最后一个公共类packageshj26122;importjavax.imageio.ImageIO;importjavax.swing.*;importjavax.swing.filechooser.FileNameExtensionFilter;importjava.awt.*;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;publicclassFilterImage{privateGraphicsg;privateBufferedImagebufferedImage;privateStringfilterName;privateintPixelSize0;publicFilterImage(Graphicsg){this.gg;}publicvoidsetFilterName(StringfilterName){this.filterNamefilterName;}publicintgetPixelSize(){returnPixelSize;}publicvoidsetPixelSize(intPixelSize){this.PixelSizePixelSize;}publicvoidfilterImage(int[][]PixelArr){if(filterNamenull){filterName原图;}switch(filterName){case原图:drawPixel(PixelArr);break;case马赛克:mosaic(PixelArr);break;}}publicvoiddrawPixel1(int[][]PixelArr){for(inti0;iPixelArr.length;i){for(intj0;jPixelArr[0].length;j){intrgbPixelArr[i][j];intredrgb160xFF;intgreenrgb80xFF;intbluergb80xFF;ColorcolornewColor(red,green,blue);g.setColor(color);g.drawLine(j,i,j,i);}}}publicvoiddrawPixel(int[][]PixelArr){BufferedImagebufferedImagenewBufferedImage(PixelArr[0].length,PixelArr.length,BufferedImage.TYPE_INT_RGB);GraphicsbuffGbufferedImage.getGraphics();for(inti0;iPixelArr.length;i){for(intj0;jPixelArr[0].length;j){intrgbPixelArr[i][j];intredrgb160xFF;intgreenrgb80xFF;intbluergb80xFF;ColorcolornewColor(red,green,blue);buffG.setColor(color);buffG.drawLine(j,i,j,i);}}g.drawImage(bufferedImage,0,0,PixelSizebufferedImage.getWidth(),PixelSizebufferedImage.getHeight(),null);}publicvoidmosaic(int[][]PixelArr){BufferedImagebufferedImagenewBufferedImage(PixelArr[0].length,PixelArr.length,BufferedImage.TYPE_INT_RGB);GraphicsbuffGbufferedImage.getGraphics();for(inti0;iPixelArr.length;i10){for(intj0;jPixelArr[0].length;j10){intrgbPixelArr[i][j];intredrgb160xFF;intgreenrgb80xFF;intbluergb80xFF;ColorcolornewColor(red,green,blue);buffG.setColor(color);buffG.fillRect(j,i,10,10);}}g.drawImage(bufferedImage,0,0,PixelSizebufferedImage.getWidth(),PixelSizebufferedImage.getHeight(),null);}publicint[][]rotate(int[][]PixelArr){int[][]nArrnewint[PixelArr[0].length][PixelArr.length];for(inti0;iPixelArr.length;i){for(intj0;jPixelArr[0].length;j){nArr[j][PixelArr.length-1-i]PixelArr[i][j];}}returnnArr;}publicvoidgrey(int[][]PixelArr){BufferedImagebufferedImagenewBufferedImage(PixelArr[0].length,PixelArr.length,BufferedImage.TYPE_INT_RGB);for(inti0;iPixelArr.length;i){for(intj0;jPixelArr[0].length;j){intrgbPixelArr[i][j];intredrgb160xFF;intgreenrgb80xFF;intbluergb0xFF;intgreyValue(int)(0.299*red0.587*green0.114*blue);intnewRGB(greyValue16)|(greyValue8)|greyValue;bufferedImage.setRGB(j,i,newRGB);}}g.drawImage(bufferedImage,0,0,null);}}和上面一样我们需要导入Java标准库以及第三方库包括图像处理、swing组件、文件操作等功能。然后我们需要定义一个名为FilterImage的公共类然后我们还需要定义一些成员变量接下来我们需要用构造方法接收一个Graphics对象并赋值给成员变量g然后我们需要设置当前滤镜名称以及设置并获取像素块大小然后再设置通用滤镜应用方法然后我们需要绘制原始像素最后我们在对其他功能进行编写。总结设计图像处理工具在Java中应该算是一个较为基础的项目可以帮助初学者更加了解Java语言的使用。