`

设置图片品质 大小

    博客分类:
  • java
OS 
阅读更多

 public static void toJPG(String source, String dest, int quality) throws JimiException {

  if (dest == null || dest.trim().equals(""))

   dest = source;

  if (!dest.toLowerCase().trim().endsWith("jpg")) {

   dest += ".jpg";

   System.out.println("Overriding to JPG, output file: " + dest);

  }

  if (quality < 0 || quality > 100 || (quality + "") == null

  || (quality + "").equals("")) {

   System.out.println("quality must between ’0’ and ’100’");

   System.out.println("set to DEFAULT value:’75’");

   quality = 100;

  }

  try {

   JPGOptions options = new JPGOptions();

   options.setQuality(quality);

   ImageProducer image = Jimi.getImageProducer(source);

   JimiWriter writer = Jimi.createJimiWriter(dest);

   writer.setSource(image);

   // 加入属性设置,非必要

   // /*

   writer.setOptions(options);

   // */
   writer.putImage(dest);
   
   OutputStream os = new ByteArrayOutputStream();
   
   writer.putImage(os);

  } catch (JimiException je) {

   throw je;

  }

 }
 
 public static void toJPG(InputStream input, String dest, int quality) throws JimiException {

  /*if (dest == null || dest.trim().equals(""))

   dest = source;*/

  if (!dest.toLowerCase().trim().endsWith("jpg")) {

   dest += ".jpg";

   System.out.println("Overriding to JPG, output file: " + dest);

  }

  if (quality < 0 || quality > 100 || (quality + "") == null

  || (quality + "").equals("")) {

   System.out.println("quality must between ’0’ and ’100’");

   System.out.println("set to DEFAULT value:’75’");

   quality = 100;

  }

  try {

   JPGOptions options = new JPGOptions();

   options.setQuality(quality);

   //ImageProducer image = Jimi.getImageProducer(source);
   ImageProducer image = Jimi.getImageProducer(input);

   JimiWriter writer = Jimi.createJimiWriter(dest);

   writer.setSource(image);

   // 加入属性设置,非必要

   // /*

   writer.setOptions(options);

   // */
   writer.putImage(dest);

  } catch (JimiException je) {

   throw je;

  }

 }

 /**
  *
  * 线性改变图片尺寸
  *
  * @param source
  *
  * 源文件完整路径
  *
  * @param desc
  *
  * 目标文件完整路径
  *
  * @param descWidth
  *
  * 图片期望宽度
  *
  * @param descHeight
  *
  * 图片期望高度
  * @throws Exception
  *
  */

 public void changeDimension(String source, String desc, int descWidth,
   int descHeight)

 throws Exception {

  String temp = desc;

  File _file = null;

  if (desc == null || desc.trim().equals(""))

   desc = source;

  if (!desc.toLowerCase().trim().endsWith("jpg")) {

   temp = desc.trim() + ".jpg";

  }

  this.toJPG(source, temp, 100);

  _file = new File(temp); // 读入文件

  Image src = javax.imageio.ImageIO.read(_file); // 构造Image对象

  double wideth = (double) src.getWidth(null); // 得到源图宽

  double height = (double) src.getHeight(null); // 得到源图长

  int iWideth = descWidth;

  int iHeight = descHeight;

  BufferedImage tag = new BufferedImage(iWideth, iHeight,

  BufferedImage.TYPE_INT_RGB);

  tag.getGraphics().drawImage(src, 0, 0, iWideth, iHeight, null); // 绘制缩小后的图

  if (!temp.trim().equals(desc))

   _file.deleteOnExit();

  if (desc.toLowerCase().trim().endsWith("jpg")) {

   JimiWriter writer = Jimi.createJimiWriter(desc);

   writer.setSource(tag);

   writer.putImage(desc);
  } else {
   throw new Exception("不支持此格式的图片尺寸的转换");
  }
 }

 /**
  *
  * 线性改变图片尺寸(可同时改变图片格式)
  *
  *
  *
  * @param source
  *
  * 源文件完整路径
  *
  * @param desc
  *
  * 目标文件完整路径
  *
  * @param ins
  *
  * 放大/缩小比率
  * @throws Exception
  *
  */
 public void changeDimension(String source, String desc, double percent)

 throws Exception {

  String temp = desc;

  File _file = null;

  if (desc == null || desc.trim().equals(""))

   desc = source;

  if (!desc.toLowerCase().trim().endsWith("jpg")) {

   temp = desc.trim() + ".jpg";

  }

  this.toJPG(source, temp, 100);

  _file = new File(temp); // 读入文件

  Image src = javax.imageio.ImageIO.read(_file); // 构造Image对象

  double wideth = (double) src.getWidth(null); // 得到源图宽

  double height = (double) src.getHeight(null); // 得到源图长

  int iWideth = (int) (wideth * percent);

  int iHeight = (int) (height * percent);

  BufferedImage tag = new BufferedImage(iWideth, iHeight,

  BufferedImage.TYPE_INT_RGB);

  tag.getGraphics().drawImage(src, 0, 0, iWideth, iHeight, null); // 绘制缩小后的图

  if (!temp.trim().equals(desc))

   _file.deleteOnExit();

  if (desc.toLowerCase().trim().endsWith("jpg")) {

   JimiWriter writer = Jimi.createJimiWriter(desc);

   writer.setSource(tag);

   writer.putImage(desc);
  } else {
   throw new Exception("不支持此格式的图片尺寸的转换");
  }

 }
 public byte [] toJPG(String source) throws IOException {
  ByteArrayOutputStream os = new ByteArrayOutputStream();
  File fin = new File(source);
  BufferedImage input = ImageIO.read(fin);
  ImageIO.write(input, "jpg", os);
  byte [] bytes = os.toByteArray();
  return bytes;
 }
 
 public byte[] toJPG(byte[] tempbytes) throws IOException {
  ByteArrayOutputStream os = new ByteArrayOutputStream();
  InputStream in = new ByteArrayInputStream(tempbytes);
  BufferedImage input = ImageIO.read(in);
  ImageIO.write(input, "jpg", os);
  byte [] bytes = os.toByteArray();
  return bytes;
 }
 
 public byte [] changeDimension(InputStream is,int expectWidth,int expectHeight) throws IOException {
  ByteArrayOutputStream os = new ByteArrayOutputStream();
  BufferedImage input = ImageIO.read(is);
  
  BufferedImage scaledBI = new BufferedImage(expectWidth, expectHeight,
                BufferedImage.TYPE_INT_RGB);
        Graphics2D g = scaledBI.createGraphics();
        g.setComposite(AlphaComposite.Src);
        g.drawImage(input, 0, 0, expectWidth, expectHeight, null);
        g.dispose();
        ImageIO.write(scaledBI, "jpg", os);
        byte [] descBytes = os.toByteArray();
  return descBytes;
 }
 
 public static boolean isJPG(byte[] bytes) {
  if (String.valueOf(bytes[0]).equals("-1") && String.valueOf(bytes[1]).equals("-40") && String.valueOf(bytes[2]).equals("-1") /*&& String.valueOf(bytes[3]).equals("-32")*/)
   return true;
  else
   return false;
 }
 public static boolean isPNG(byte[] bytes) {
  if(String.valueOf(bytes[0]).equals("-119") && String.valueOf(bytes[1]).equals("80") && String.valueOf(bytes[2]).equals("78") && String.valueOf(bytes[3]).equals("71"))
   return true;
  else
   return false;
 }
 public static boolean isGIF(byte[] bytes) {
  
  if (String.valueOf(bytes[0]).equals("71") && String.valueOf(bytes[1]).equals("73") && String.valueOf(bytes[2]).equals("70"))
   return true;
  else
   return false;
 }
 
 public static boolean isBMP(byte[] bytes) {
  if (String.valueOf(bytes[0]).equals("66") && String.valueOf(bytes[1]).equals("77"))
   return true;
  else
   return false;
 }
 
 public static byte[] getBytes(String filePath) throws Exception {
  File file = new File(filePath);
  InputStream input = new FileInputStream(file);
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  byte [] bytes = new byte [4096];
  int length = input.read(bytes);
  while(length != -1) {
   baos.write(bytes,0,length);
   length = input.read(bytes);
  }
  byte [] tempByte = baos.toByteArray();
  baos.close();
  input.close();
  return tempByte;
 }
 
 public double getPicLength(InputStream input) throws IOException {
  long lBytes = input.available();
  return ((double)lBytes/1024)/1024;
 }

分享到:
评论

相关推荐

    html5 canvas 图片压缩

    图片压缩的核心在于将图片绘制到Canvas上时,可以指定绘制的宽度和高度,这实际上就是一种简单的缩放过程。然后我们可以使用`toDataURL()`方法将Canvas内容转换为Base64编码的data URL,这个URL可以代表一个压缩后的...

    图片压缩器Caesium1.5汉化版.zip

    你可以设置压缩选项,包括压缩的品质及输出格式,可以调整图片大小绝对值及百分比,经小编实测,大小为243.64kb的图片,品质选择50%压缩后为130.93kb,图片大小减小了一倍,如果品质设置再低些,则图片体积会变得更小...

    Caesium图片压缩1.5中文汉化版.rar

    软件介绍: 一款很好用的图片压缩工具Caesium,压缩JPG格式图片效果更佳,简单试了一下,能够将400KB大小的图片压缩到100KB,...压缩后的图片品质不会有明显的损失,但文件的体积却能大幅减小,从而节省磁盘空间。

    C#无损旋转图片.cs

    c# 中旋转图片,保存后会发现图片文件缩小或增加很多,此方法可以保证原来图片的品质,基本和原图大小一样。 程序里使用了Bitmap的默认品质来保存图片,默认品质是75(试着改变这个数,100%时最好),压缩率大概为21...

    更改照片大小kb.docx

    5. **调整图片品质**: - 当保存JPEG文件时,降低【JPEG选项】中的品质设置,可以在保持视觉效果的前提下减少文件大小。 6. **转换色彩空间**: - 如果原始图片是CMYK色彩模式,转换为RGB模式可以减小文件大小,...

    专业批量图片处理工具

    软件说明: 图片批量缩放软件是一款根据用户设置格式和大小自动操作的工具,操作方便,只需要要三步: 1. 选择图片导出的目录 2. 图片输出格式设置 ...3. 支持图像格式的自动转换, 可设置输出图像大小和图像品质.

    VBS超小图片缩小工具

    4. **质量设置**:图像压缩时的品质设置,更高的品质意味着更大的文件大小,而较低的品质则可以显著减小文件大小。 5. **批量处理**:是否支持一次处理多个图片,这对于处理大量图片非常有用。 6. **安全提示**:...

    php多功能图片处理类分享(php图片缩放类)

    质量参数决定了生成图片的品质,一般范围从0到100。 6. 水印的定位和样式设置: 水印可以定位在图片的任意位置,并且支持横向和纵向的偏移设置。用户还可以设置水印的文字、字体大小、颜色等属性,以达到理想的...

    caesium-1.6.1 图片批量无损压缩工具

    Caesium(图片批量无损压缩工具)是一...它可以在保证图片原有品质的同时,将图片大小减少90%,就是如此神奇!而且Caesium操作简单,可以同时压缩数张图片,可自定义图片质量,在操作的同时还可以即时预览压缩前后的图片.

    更改照片大小kb.pdf

    * 直接另存图片,菜单——文件——存储为,弹出"JPEG 选项"窗口中,品质选择8~10。 * 转换图片色彩空间,若图片的原始色彩空间是 CMYK,则可在转换成 RGB 后存储可降少图片大小。 * 调整分辨率,将分辨率设成 72 ...

    图片查看器(支持鼠标滚轮缩放及拖动图片,半透明窗体)

    例如,通过设置窗体的透明度属性实现半透明效果,通过捕获鼠标滚轮事件并调整图片的缩放比例,以及通过监听鼠标移动事件和图片坐标计算来实现拖动查看。这样的编程技巧需要对图形用户界面(GUI)编程有深入的理解,...

    批量图片压缩器Caesium汉化版.rar

    软件介绍: 现在数码相机的普及,让我们的电脑硬盘越来越小了,由于当前数码相机拍摄的图片体积都...还可以调整图片大小,支持按比例调整大小,当设置完成后点击“压缩”,程序会自动进行图片压缩,而无需手动操作。

    图像大小的计算.pdf

    数码照片文件大小和拍摄时设置的分辨率和品质有关,還和被拍摄景物的色彩、纹理复杂程度有关,同样的相机设置拍白墙和风景文件大小是不一样的。 计算机文件大小的基本单位是字节(byte),每个字节是由 8 个比特...

    java高清处理图片

    - 如果是在Tomcat服务器下运行的应用,则需要修改`catalina.bat`文件中的内存设置,增加堆内存大小和永久代大小,例如设置`-Xms256M-Xmx768M-XX:MaxPermSize=128M`,这有助于避免因内存不足导致的程序崩溃。...

    网站首页 广告图片切换 活动图片 图片切换

    还可以通过压缩图片、调整分辨率、使用WebP等高效图片格式来减小图片大小,进一步提升页面加载速度。 在实际应用中,设计师还需要考虑图片的尺寸适应性,确保在不同设备和屏幕尺寸下都能正常显示。响应式设计原则...

    安卓游戏开发图片素材

    这可能涉及到对图片进行分类,如角色、环境、UI等,然后进行必要的编辑和优化,如调整大小、格式转换、透明度设置等,以确保素材能无缝融入到游戏中。 此外,考虑到安卓平台的多样性,开发者还需要关注图片的分辨率...

    图片压缩工具类

    描述中提到“无损”压缩,意味着该工具在压缩图片时不会降低原始图像的品质,同时可以调整压缩后的清晰度,以适应不同的需求。此外,标签中的“可限制大小”和“可限制像素”进一步表明该工具具有灵活的设置选项,...

    基于QT的C++图片查看(浏览)器的设计与实现

    同时,还可以提供一个还原功能,将图片恢复到原始大小。 6. **事件处理**:QT的信号和槽机制是事件驱动编程的核心,我们将为各个按钮和功能添加相应的信号和槽函数,以响应用户的交互操作。 在实际开发过程中,...

    winform C# 将图片转成透明背景的png 源代码

    2. **创建透明背景**:创建一个新的Bitmap对象,设置其大小与原图相同,并指定背景为透明: ```csharp Bitmap transparentImage = new Bitmap(originalImage.Width, originalImage.Height, PixelFormat.Format32...

Global site tag (gtag.js) - Google Analytics