Image图片转化为JPG图片

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**
 * @author Daniel Cao
 * @date 2007-5-18
 * @time 上午09:51:24
 *
 */
public class ImageUtil {

/**
  * @param args
  */
 public static void main(String[] args) {
  try{
   CopyImageFromURL("E:/cat.png","E:/111/aaa.jpg");
   CopyImageFromURL("http://www.csdn.net/ui/styles/public_header_footer/logo_csdn.gif","E:/111/logo_csdn.jpg");
  }catch(Exception e){
   e.printStackTrace();
  }
 }

/**
  *
  * @param imageURL 输入图片的URL完整路径,可以是本地文件,也可以是网路上的文件
  * @param localPath 保存在本地的路径
  * @throws Exception
  */
 public static void CopyImageFromURL(String imageURL, String localPath)
   throws Exception {
  // 取得文件后缀名
  String tmpImageURL = imageURL.toLowerCase();
  String regex = "(//.)(gif|bmp|png|dib|jpg|jpeg|jfif)";
  Pattern pattern = Pattern.compile(regex);
  Matcher matcher = pattern.matcher(tmpImageURL);
  if (!matcher.find()) {
   throw new Exception("不支持该格式文件.");
  }
  URL url;
  if (imageURL.toLowerCase().startsWith("http")) {// http url
   url = new URL(imageURL);
  } else {// 文件url
   String tmpUrl = imageURL.toLowerCase();
   String beginer = tmpUrl.split("/")[0];
   if (beginer.matches("[c-o]:")) {// 路径支持到c:d:....o:
    url = new File(imageURL).toURL();
   } else {
    throw new Exception("无法解析文件URL.");
   }
  }
  BufferedImage src = ImageIO.read(url);
  int width = src.getWidth(null);
  int height = src.getHeight(null);
  // 保存图像到本地
  int lastSep1 = localPath.lastIndexOf("/");
  int lastSep2 = localPath.lastIndexOf("//");
  int lastSep = (lastSep1>=lastSep2?lastSep1:lastSep2);
  String path = localPath.substring(0,lastSep);
  File localDir = new File(path);
  if (!localDir.exists()) {
   localDir.mkdirs();
  }
  BufferedImage outImg = new BufferedImage(width, height,src.getType());
  outImg.getGraphics().drawImage(src, 0, 0, width, height, null);
  FileOutputStream out = new FileOutputStream(localPath);
  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
  encoder.encode(outImg);

out.close();
 }
}

可以把所有支持格式的图片gif|bmp|png|dib|jpg|jpeg|jfif转化为jpg格式的图片,原始图片可以是网路上的图片,也可以是本地磁盘上的图片。

另一种实现方式:

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;

import javax.imageio.ImageIO;

/**
 * @author Daniel Cao
 * @date 2007-5-18
 * @time 上午09:51:24
 *
 */
public class ImageUtil {

/**
  * @param args
  */
 public static void main(String[] args) {
  try {
   // CopyImageFromURL("E:/cat.png","E:/111/aaa.jpg");
   CopyImageFromURL(
     "http://www.csdn.net/ui/styles/public_header_footer/logo_csdn.gif",
     "jpg", "E:/111/aaa.png");
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

/**
  * 输出图片只支持一些非标准的图片格式
  *
  * @param imageURL
  *            输入图片的URL完整路径,可以是本地文件,也可以是网路上的文件
  * @param type
  *            输出图片类型,只能是 bmp|png|jpg|jpeg
  * @param localPath
  *            保存在本地的路径
  * @throws Exception
  */
 public static void CopyImageFromURL(String imageURL, String type,
   String localPath) throws Exception {
  // 取得文件后缀名
  String tmpImageURL = imageURL.toLowerCase();
  String srcSuffix = tmpImageURL.substring(imageURL.lastIndexOf(".") + 1);
  String regex = "^gif|bmp|png|jpg|jpeg|jfif$";
  String regex1 = "^bmp|png|jpg|jpeg$";
  if (!srcSuffix.matches(regex)) {
   throw new Exception("不支持源图片格式[" + srcSuffix + "].");
  }
  if (!type.matches(regex1)) {
   throw new Exception("不支持输出图片格式[" + type + "].");
  }
  URL url;
  if (imageURL.toLowerCase().startsWith("http")) {// http url
   url = new URL(imageURL);
  } else {// 文件url
   String tmpUrl = imageURL.toLowerCase();
   String beginer = tmpUrl.split("/")[0];
   if (beginer.matches("[c-o]:")) {// 路径支持到c:d:....o:
    url = new File(imageURL).toURL();
   } else {
    throw new Exception("无法解析文件URL.");
   }
  }
  BufferedImage src = ImageIO.read(url);
  // 保存图像到本地
  // 解析输出路径
  int lastSep11 = localPath.lastIndexOf("/");
  int lastSep21 = localPath.lastIndexOf("//");
  int lastSep22 = (lastSep11 >= lastSep21 ? lastSep11 : lastSep21);
  String lastName = localPath.substring(lastSep22 + 1);
  boolean isOutputDir = true;
  if (lastName.indexOf(".") > 0) {
   int lst = lastName.lastIndexOf(".");
   String sfx = lastName.substring(lst + 1);
   if (sfx.matches(regex1)) {
    isOutputDir = false;
   }
  }
  String outputName;
  if (isOutputDir){//输出的是路径
   File localDir = new File(localPath);
   if (!localDir.exists()) {// 输入的是路径
    localDir.mkdirs();
   }
   //输出文件名从输入文件解析
   int lastSep1 = imageURL.lastIndexOf("/");
   int lastSep2 = imageURL.lastIndexOf("//");
   int lastSep = (lastSep1 >= lastSep2 ? lastSep1 : lastSep2);
   outputName = imageURL.substring(lastSep + 1);
  }else{//输出的是文件
   int lastSep1 = localPath.lastIndexOf("/");
   int lastSep2 = localPath.lastIndexOf("//");
   int lastSep = (lastSep1 >= lastSep2 ? lastSep1 : lastSep2);
   outputName = localPath.substring(lastSep + 1);
   String path = localPath.substring(0,lastSep);
   File outDir = new File(path);
   if (!outDir.exists()){
    outDir.mkdirs();
   }
   localPath = path;
  }
  //用给定的后缀输出
  String newName = outputName.substring(0,outputName.lastIndexOf(".")) + "." + type;
  FileOutputStream out = new FileOutputStream(localPath + "/" + newName);
  ImageIO.write(src, type, out);
  System.out.println(localPath + "/" + newName + "输出成功.");

out.close();
 }
}

Image图片转化为JPG图片相关推荐

  1. Python使用PIL将png图片转化为jpg图片

    Python使用PIL将png图片转化为jpg图片 pip install Pillow #PIL将png图片转化为jpg图片语法 from PIL import Imageim1 = Image.o ...

  2. AD17如何将图片转化为PCB图片丝印,定制你的专属logo!

    AD17如何将图片转化为PCB图片丝印,定制你的专属logo! 在AD中,画完PCB怎么能不加上加上独一无二的logo! 步骤非常简单,笔者只讲干货: 1.首先,若没有脚本文件可以先下载一个脚本工具: ...

  3. python修改图片,Python之修改图片像素值的方法

    在做语义分割项目时,标注的图片不合标准,而且类型是RGBA型,且是A的部分表示的类别,因此需要将该图片转化为RGB图片 # -*- coding:utf8 -*- import os from PIL ...

  4. xsd文件转图片_如何将图片转化为PDF格式?分享一个超简单的方法给你

    如何将图片转化为PDF格式?有些朋友经常需要将图片转换成PDF格式文件,这样比较方便保存和传输.熟悉文件转换的朋友是知道该怎么操作的,不了解的朋友不用担心,今天我来教大家一个方法,能够帮助我们简单快速 ...

  5. 批量将PPM格式图片转化为JPG格式

    将PPM格式图片转化为JPG格式 做图像识别的时候数据集常常是ppm格式的,虽然不影响建模训练,但是我们电脑往往不支持ppm格式的图像展示. 比如到做交通标志识别的时候用到的BelgiumTS交通数据 ...

  6. Itext学习(二)----实现把图片转化为pdf

    实现 图像转化为pdf 把图片转化为pdf 实现效果图 itext 逻辑代码 import java.io.File; import java.io.FileNotFoundException; im ...

  7. 将png图片转化为icon

    闲着没事做了个工具,将png图片转化为icon图标,安装即用.(转换后的icon图标在D:/图片素材/icon) 链接:https://pan.baidu.com/s/1We-vZxjV4GRLtc4 ...

  8. MATLAB实现将图片转化为gif格式的动画

    MATLAB实现将图片转化为gif格式的动画   gif格式的动画实质上就是连续播放一系列的图片来实现的.所以将图片连接起来保存到gif格式的文件中即可实现. 通用格式: %% 保存为GIF格式 cl ...

  9. 如何将jpg等格式的图片转化为yuv

    1. 下载ffmpeg,转码图片和视频的利器啊!官方免费下载地址: Releases · BtbN/FFmpeg-Builds · GitHub 2. 无需安装,解压缩之后即可使用.这时需要使用win ...

最新文章

  1. python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析
  2. OpenGL入门学习(十二) 【转】
  3. python自动化办公都能做什么菜-python接口自动化
  4. 网站中人性化提示信息的JavaScript实现
  5. USB2.0 设备类代码表
  6. BugFree2.1.3升级到BugFree3.0.2
  7. c语言创建字符树,使用C语言构建基本的二叉树数据结构
  8. centos7 搭建apache druid
  9. windows 下借助7zip实现命令行解压缩
  10. SpringBoot 核心源码解读
  11. Linux服务器网卡驱动安装及故障排除
  12. 华为展望5G未来 安全问题成关键
  13. vue 中引入阿里云的云盾防水墙
  14. 小米oj和为零的三元组
  15. HAL库的串口基础学习(包含串口接收不定长数据的实现)
  16. 采用最大连通域算法对三维医学图像分割结果做后处理
  17. A/B Problem(大数)
  18. 泰山OFFICE技术讲座:字体属性的上标研究1:上标是什么
  19. 只有程序员才懂的笑话
  20. c语言中extem的作用,extern是什么意思?C语言中extern用法全解

热门文章

  1. 三、mysql 存储引擎-建库建表操作
  2. 秋招面试上岸经验分享
  3. Linux-磁盘空间转移
  4. 【node进阶】深入浅出websocket即时通讯(一)
  5. Animation Rigging创建模板动画(三)
  6. 腾讯数十亿广告的秘密武器:利用大数据实时精准推荐
  7. 儿童编程学什么内容呢
  8. python编写ARP拒绝服务攻击脚本
  9. 用java求解一元四次方程_Java程序設計(十四)----一個求一元二次方程根
  10. 像win10的linux发行版,Linux发行版遭像素级美化:Win10老用户有如“回家”