当前位置: 代码迷 >> Java相关 >> java用BufferedImage转换图片大小并保存,保存的图片总是一片黑色,该怎么处理
  详细解决方案

java用BufferedImage转换图片大小并保存,保存的图片总是一片黑色,该怎么处理

热度:7825   发布时间:2013-02-25 21:52:15.0
java用BufferedImage转换图片大小并保存,保存的图片总是一片黑色
程序实现将一个图片缩小成256*256像素图片并保存,源图片为jpg格式,但是每次转换后存在文件夹中的文件均为一片黑色,大小为1.61k,请问各位大牛怎么解决啊?

public void targetZoomOut(String sourcePath){ //将目标图片缩小成256*256并保存
  File file1=new File(sourcePath); //用file1取得图片名字
  String name=file1.getName();

  try{
  BufferedImage input = ImageIO.read(file1);
  Image big = input.getScaledInstance(256, 256,Image.SCALE_DEFAULT);
  BufferedImage inputbig = new BufferedImage(256, 256,BufferedImage.TYPE_INT_BGR);
  inputbig.getGraphics().drawImage(input, 0, 0, 256, 256, null); //画图


  File file2 =new File("C:/imageSort/targetPIC"); //此目录保存缩小后的关键图
  if(file2.exists()){
  System.out.println("多级目录已经存在不需要创建!!");
  }else{
  //如果要创建的多级目录不存在才需要创建。
  file2.mkdirs();
  }
  ImageIO.write(inputbig, "jpg", new File("C:/imageSort/targetPIC/"+name)); //将其保存在C:/imageSort/targetPIC/下
  } catch (Exception ex) {ex.printStackTrace();}
  }

------解决方案--------------------------------------------------------
Java code
BufferedImage input = ImageIO.read(file1);Image scaledImage = input.getScaledInstance(256, 256,Image.SCALE_DEFAULT);BufferedImage output = new BufferedImage(256, 256,BufferedImage.TYPE_INT_BGR);output.createGraphics().drawImage(scaledImage, 0, 0, null); //画图
------解决方案--------------------------------------------------------
Java code
//本来就没错呀    public static void targetZoomOut(String sourcePath) { //将目标图片缩小成256*256并保存        File file1 = new File(sourcePath); //用file1取得图片名字        String name = file1.getName();        try {            BufferedImage input = ImageIO.read(file1);            BufferedImage inputbig = new BufferedImage(256, 256, BufferedImage.TYPE_INT_BGR);            Graphics2D g = (Graphics2D) inputbig.getGraphics();            g.drawImage(input, 0, 0,256,256,null); //画图            g.dispose();            inputbig.flush();            File file2 = new File("e:/"); //此目录保存缩小后的关键图            if (file2.exists()) {                System.out.println("多级目录已经存在不需要创建!!");            } else {                //如果要创建的多级目录不存在才需要创建。                file2.mkdirs();            }            String fname = name.substring(0, name.lastIndexOf("."));//新名字            ImageIO.write(inputbig, "jpg", new File("e:/" + fname + ".jpg")); //将其保存在C:/imageSort/targetPIC/下        } catch (Exception ex) {            ex.printStackTrace();        }    }
  相关解决方案