public static void createIcon(byte[] imageData, String iconFileName, int width, int height) throws IOException { double Ratio = 0.0; BufferedImage bi = ImageIO.read(new ByteArrayInputStream(imageData)); if ((bi.getHeight() > width) || (bi.getWidth() > height)) { if (bi.getHeight() > bi.getWidth()) Ratio = (double)width / bi.getHeight(); else Ratio = (double)height / bi.getWidth(); } AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(Ratio, Ratio), null); Image iconImage = op.filter(bi, null); File file = new File(iconFileName); if (!file.exists()) { File folder = file.getParentFile(); if (folder != null && !folder.exists()) { FileUtils.forceMkdir(folder); } file.createNewFile(); } ImageIO.write((BufferedImage) iconImage, "jpg", file); } public static void main(string[] args) throws IOException{ File file = new File("c://1.jpg"); InputStream inputStream = new FileInputStream(file); byte[] bytes = new byte[(int)(file.length())]; int set = 0; // while (true) { // int read = inputStream.read(bytes, set, (int)(file.length())); // if (read == -1) // break; // set += read; // } //这种方式有时候行有时候不行,还没找到缘由 while (set < (int)(file.length())) { int read = inputStream.read(bytes, set, (int)(file.length()) - set); if (read == -1) break; set += read; } createIcon(bytes, "c://2.jpg", 300, 300); }