java 裁剪图片全黑
java croped image all black
我正在尝试使用 java 裁剪图像,这是我的代码:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class crop
{
public static void main(String[] args)
{
BufferedImage img = null;
try
{
img = ImageIO.read(new File("/Users/mathewlewis/desktop/pic.jpg"));
String width = "" + img.getWidth();
String height = "" + img.getHeight();
cout("heigth = " + height + " and width = " + width);
BufferedImage crp = img.getSubimage(0,0,100,200);
try {
File outputfile = new File("crop_pic.jpg");
ImageIO.write(crp, "jpg", outputfile);
}
catch (IOException e)
{
System.out.println("error");
}
}
catch (IOException e)
{
System.out.println("error");
}
}
}
一切正常(没有错误),但是当我打开 crop_pic.jpg
时,它全黑了。这里是 pic.jpg.
我想知道为什么图像全黑,以及如何修复它。
我试过了
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class crop
{
public static void main(String[] args)
{
BufferedImage img = null;
try
{
img = ImageIO.read(new File("/Users/mathewlewis/desktop/pic.jpg"));
BufferedImage rgbImage = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
ColorConvertOp op = new ColorConvertOp(null);
op.filter(img, rgbImage);
BufferedImage crp = rgbImage.getSubimage(300,300,rgbImage.getWidth()-300,rgbImage.getHeight()-300);
try {
File outputfile = new File("crop_pic.jpg");
ImageIO.write(crp, "jpg", outputfile);
}
catch (IOException e)
{
System.out.println("error");
}
}
catch (IOException e)
{
System.out.println("error");
}
}
}
并收到此错误:
crop.java:16: error: cannot find symbol
ColorConvertOp op = new ColorConvertOp(null);
^
symbol: class ColorConvertOp
location: class crop
crop.java:16: error: cannot find symbol
ColorConvertOp op = new ColorConvertOp(null);
^
symbol: class ColorConvertOp
location: class crop
2 errors
谢谢 Forseth11!!应该注意到我没有导入 java.awt.image.ColorConvertOp!你帮了大忙。非常感谢!!!
我环顾四周,发现其他人也有类似的问题。在我测试这个时,我得到了一个奇怪的彩色图像,而不是黑色图像。这个问题是因为ImageIO
读图有误
这是我想出的有效方法,但由于我无法复制您的问题并得到黑色图像,这可能不适合您。
img = ImageIO.read(new File("/Users/mathewlewis/desktop/pic.jpg"));
BufferedImage rgbImage = new BufferedImage(img.getWidth(), img.getHeight(),
BufferedImage.TYPE_3BYTE_BGR);
ColorConvertOp op = new ColorConvertOp(null);
op.filter(img, rgbImage);
String width = "" + rgbImage.getWidth();
String height = "" + rgbImage.getHeight();
System.out.println("heigth = " + height + " and width = " + width);
BufferedImage crp = rgbImage.getSubimage(300,300,rgbImage.getWidth()-300,rgbImage.getHeight()-300);
这些是有类似问题的其他帖子:
- jpeg image color gets drastically changed after just ImageIO.read() and ImageIO.write()
- Unable to read JPEG image using ImageIO.read(File file)
编辑:我改变了它裁剪的地方,所以很容易看到,因为图像的左上部分大部分是黄色的。
我正在尝试使用 java 裁剪图像,这是我的代码:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class crop
{
public static void main(String[] args)
{
BufferedImage img = null;
try
{
img = ImageIO.read(new File("/Users/mathewlewis/desktop/pic.jpg"));
String width = "" + img.getWidth();
String height = "" + img.getHeight();
cout("heigth = " + height + " and width = " + width);
BufferedImage crp = img.getSubimage(0,0,100,200);
try {
File outputfile = new File("crop_pic.jpg");
ImageIO.write(crp, "jpg", outputfile);
}
catch (IOException e)
{
System.out.println("error");
}
}
catch (IOException e)
{
System.out.println("error");
}
}
}
一切正常(没有错误),但是当我打开 crop_pic.jpg
时,它全黑了。这里是 pic.jpg.
我想知道为什么图像全黑,以及如何修复它。
我试过了
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class crop
{
public static void main(String[] args)
{
BufferedImage img = null;
try
{
img = ImageIO.read(new File("/Users/mathewlewis/desktop/pic.jpg"));
BufferedImage rgbImage = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
ColorConvertOp op = new ColorConvertOp(null);
op.filter(img, rgbImage);
BufferedImage crp = rgbImage.getSubimage(300,300,rgbImage.getWidth()-300,rgbImage.getHeight()-300);
try {
File outputfile = new File("crop_pic.jpg");
ImageIO.write(crp, "jpg", outputfile);
}
catch (IOException e)
{
System.out.println("error");
}
}
catch (IOException e)
{
System.out.println("error");
}
}
}
并收到此错误:
crop.java:16: error: cannot find symbol
ColorConvertOp op = new ColorConvertOp(null);
^
symbol: class ColorConvertOp
location: class crop
crop.java:16: error: cannot find symbol
ColorConvertOp op = new ColorConvertOp(null);
^
symbol: class ColorConvertOp
location: class crop
2 errors
谢谢 Forseth11!!应该注意到我没有导入 java.awt.image.ColorConvertOp!你帮了大忙。非常感谢!!!
我环顾四周,发现其他人也有类似的问题。在我测试这个时,我得到了一个奇怪的彩色图像,而不是黑色图像。这个问题是因为ImageIO
读图有误
这是我想出的有效方法,但由于我无法复制您的问题并得到黑色图像,这可能不适合您。
img = ImageIO.read(new File("/Users/mathewlewis/desktop/pic.jpg"));
BufferedImage rgbImage = new BufferedImage(img.getWidth(), img.getHeight(),
BufferedImage.TYPE_3BYTE_BGR);
ColorConvertOp op = new ColorConvertOp(null);
op.filter(img, rgbImage);
String width = "" + rgbImage.getWidth();
String height = "" + rgbImage.getHeight();
System.out.println("heigth = " + height + " and width = " + width);
BufferedImage crp = rgbImage.getSubimage(300,300,rgbImage.getWidth()-300,rgbImage.getHeight()-300);
这些是有类似问题的其他帖子:
- jpeg image color gets drastically changed after just ImageIO.read() and ImageIO.write()
- Unable to read JPEG image using ImageIO.read(File file)
编辑:我改变了它裁剪的地方,所以很容易看到,因为图像的左上部分大部分是黄色的。