如何从Java中的当前图片中提取图片?

如何从Java中的当前图片中提取图片?,java,image,Java,Image,我被分配了一项任务,必须编写代码,从当前图片中提取图片。我做了一些研究,发现我需要使用一种叫做“BuffereImage”的东西来完成这项任务,但是,我从来没有被教过如何使用它,所以我想我可能会寻求一些帮助/提示,特别是如果这不是我真正需要使用的。我目前在IntelliJ工作 实际任务: 在Picture类及其JavaDocs中编写一个名为extract的方法。该方法应从当前图片中提取一张新图片,该图片由待提取区域的左上角坐标(x,y)、区域的宽度和高度定义。您的方法应该通过extractTes

我被分配了一项任务,必须编写代码,从当前图片中提取图片。我做了一些研究,发现我需要使用一种叫做“BuffereImage”的东西来完成这项任务,但是,我从来没有被教过如何使用它,所以我想我可能会寻求一些帮助/提示,特别是如果这不是我真正需要使用的。我目前在IntelliJ工作

实际任务: 在Picture类及其JavaDocs中编写一个名为extract的方法。该方法应从当前图片中提取一张新图片,该图片由待提取区域的左上角坐标(x,y)、区域的宽度和高度定义。您的方法应该通过extractTests类中包含的测试

图片类别:

public Picture(int width, int height) {
// let the parent class handle this width and height
super(width, height);
}

/**
* Constructor that takes a picture and creates a
* copy of that picture
*/
public Picture(Picture copyPicture) {
// let the parent class do the copy
super(copyPicture);
}

/**
* Constructor that takes a buffered image
*
* @param image the buffered image to use
*/
public Picture(BufferedImage image) {
super(image);
}

////////////////////// methods ///////////////////////////////////////

/**
* Method to return a string with information about this picture.
*
* @return a string with information about the picture such as fileName,
* height and width.
*/
public String toString() {
String output = "Picture, filename " + getFileName() +
" height " + getHeight()
+ " width " + getWidth();
return output;

}

public static void main(String[] args) {
FileChooser.setMediaPath("mediasources/");
String fileName = FileChooser.getMediaPath("butterfly1.jpg");
Picture pictObj = new Picture(fileName);
pictObj.explore();
}
}
测试等级:

public class n extractTests {
@Test
public void comparePicturesTest1() {
FileChooser.setMediaPath("mediasources/");
String fileName = FileChooser.getMediaPath("butterfly1.jpg");
Picture pictObj = new Picture(fileName);
Picture out = pictObj.extract(30, 240, 100, 100);
String fileName3 = FileChooser.getMediaPath("extract2.jpg");
out.write(fileName3);
String fileName1 = FileChooser.getMediaPath("extract1.jpg");
Picture pict2 = new Picture(fileName1);
String fileName2 = FileChooser.getMediaPath("extract2.jpg");
Picture pict3 = new Picture(fileName2);
comparePictures(pict2, pict3);
}

@Test
public void comparePicturesTest2() {
FileChooser.setMediaPath("mediasources/");
String fileName = FileChooser.getMediaPath("butterfly2.jpg");
Picture pictObj = new Picture(fileName);
Picture out = pictObj.extract(80, 50, 400, 300);
String fileName3 = FileChooser.getMediaPath("extract4.jpg");
out.write(fileName3);
String fileName1 = FileChooser.getMediaPath("extract3.jpg");
Picture pict2 = new Picture(fileName1);
String fileName2 = FileChooser.getMediaPath("extract4.jpg");
Picture pict3 = new Picture(fileName2);
comparePictures(pict2, pict3);
}

private void comparePictures(Picture pict2, Picture pict3) {
Pixel[] pixels1 = pict2.getPixels();
Pixel[] pixels2 = pict3.getPixels();
assertEquals(pixels1.length, pixels2.length);
for(int i = 0; i < pixels1.length; i++) {
Pixel pixel1 = pixels1[i];
Pixel pixel2 = pixels2[i];
assertEquals("At pixel (" + pixel1.getX() + ", " + pixel1.getY() + ")",
pixel1.getColor(), pixel2.getColor());
}
}
}
公共n类测试{
@试验
public void comparePicturesTest1(){
setMediaPath(“mediasources/”);
字符串文件名=FileChooser.getMediaPath(“butterfly1.jpg”);
Picture pictObj=新图片(文件名);
Picture out=pictObj.摘录(30240100100);
字符串fileName3=FileChooser.getMediaPath(“extract2.jpg”);
out.write(文件名3);
字符串fileName1=FileChooser.getMediaPath(“extract1.jpg”);
Picture pict2=新图片(文件名1);
字符串fileName2=FileChooser.getMediaPath(“extract2.jpg”);
Picture pict3=新图片(文件名2);
比较特征(图2、图3);
}
@试验
公共空间比较Epicturest2(){
setMediaPath(“mediasources/”);
字符串文件名=FileChooser.getMediaPath(“butterfly2.jpg”);
Picture pictObj=新图片(文件名);
Picture out=pictObj.摘录(80,50,400,300);
字符串fileName3=FileChooser.getMediaPath(“extract4.jpg”);
out.write(文件名3);
字符串fileName1=FileChooser.getMediaPath(“extract3.jpg”);
Picture pict2=新图片(文件名1);
字符串fileName2=FileChooser.getMediaPath(“extract4.jpg”);
Picture pict3=新图片(文件名2);
比较特征(图2、图3);
}
私人空间对比图(图2、图3){
像素[]像素1=pict2.getPixels();
像素[]pixels2=pict3.getPixels();
assertEquals(像素1.长度,像素2.长度);
对于(int i=0;i

提前谢谢

JavaDOcs是您的朋友,请参阅