<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 1. 不改變寬高 1. 通過改變像素只改變內容大小,不改變寬高 ~~~ package net.aexit.zongjian.ent.common.utils; import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageWriteParam; import javax.imageio.ImageWriter; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ImageCompressUtil { /** * 壓縮圖片,修改像素尺寸不變 * @param imgBytes 字節 * @param qality 壓縮比例 0~1 * @param format 圖片格式 * @return 字節 * @throws IOException */ public static byte[] compressPictureByQality(byte[] imgBytes, float qality,String format) throws IOException { BufferedImage src; ByteArrayOutputStream outStream = null; ImageWriter imgWrier; ImageWriteParam imgWriteParams; ByteArrayInputStream inputStream =null; byte[] rtnByte = null; try { // 指定寫圖片的方式為 jpg imgWrier = ImageIO.getImageWritersByFormatName(format).next(); imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam( null); // 要使用壓縮,必須指定壓縮方式為MODE_EXPLICIT imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT); // 這里指定壓縮的程度,參數qality是取值0~1范圍內, imgWriteParams.setCompressionQuality(qality); imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED); inputStream = new ByteArrayInputStream(imgBytes); ColorModel colorModel = ImageIO.read(inputStream).getColorModel();// ColorModel.getRGBdefault(); imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier( colorModel, colorModel.createCompatibleSampleModel(32, 32))); inputStream = new ByteArrayInputStream(imgBytes); src = ImageIO.read(inputStream); outStream = new ByteArrayOutputStream(); imgWrier.reset(); imgWrier.setOutput(ImageIO.createImageOutputStream(outStream)); // 調用write方法,就可以向輸入流寫圖片 imgWrier.write(null, new IIOImage(src, null, null), imgWriteParams); rtnByte = outStream.toByteArray(); } finally { if (outStream != null) { outStream.close(); } if (inputStream != null) { inputStream.close(); } } return rtnByte; } public static void main(String args[]) throws Exception { // ImageCompressUtil.saveMinPhoto("C:\\Users\\1\\Desktop\\Snapshots\\\\20180907_10.55.08_8068.jpg", "C:\\Users\\1\\Desktop\\Snapshots\\20180907_10.44.05_8068副本.jpg", 800, 1); } } ~~~ ## 2. 改變寬高 ~~~ package com.aixin.tuna.workflow.util; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class ImageCompressUtil { /** * 直接指定壓縮后的寬高: * (先保存原文件,再壓縮、上傳) * 壹拍項目中用于二維碼壓縮 * @param oldFile 要進行壓縮的文件全路徑 * @param width 壓縮后的寬度 * @param height 壓縮后的高度 * @param quality 壓縮質量 * @param smallIcon 文件名的小小后綴(注意,非文件后綴名稱),入壓縮文件名是yasuo.jpg,則壓縮后文件名是yasuo(+smallIcon).jpg * @return 返回壓縮后的文件的全路徑 */ public static String zipImageFile(String oldFile, int width, int height, float quality, String smallIcon) { if (oldFile == null) { return null; } String newImage = null; try { /**對服務器上的臨時文件進行處理 */ Image srcFile = ImageIO.read(new File(oldFile)); /** 寬,高設定 */ BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(srcFile, 0, 0, width, height, null); String filePrex = oldFile.substring(0, oldFile.indexOf('.')); /** 壓縮后的文件名 */ newImage = filePrex + smallIcon + oldFile.substring(filePrex.length()); /** 壓縮之后臨時存放位置 */ FileOutputStream out = new FileOutputStream(newImage); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag); /** 壓縮質量 */ jep.setQuality(quality, true); encoder.encode(tag, jep); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return newImage; } /** * 保存文件到服務器臨時路徑(用于文件上傳) * @param fileName * @param is * @return 文件全路徑 */ public static String writeFile(String fileName, InputStream is) { if (fileName == null || fileName.trim().length() == 0) { return null; } try { /** 首先保存到臨時文件 */ FileOutputStream fos = new FileOutputStream(fileName); byte[] readBytes = new byte[512];// 緩沖大小 int readed = 0; while ((readed = is.read(readBytes)) > 0) { fos.write(readBytes, 0, readed); } fos.close(); is.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return fileName; } /** * 等比例壓縮算法: * 算法思想:根據壓縮基數和壓縮比來壓縮原圖,生產一張圖片效果最接近原圖的縮略圖 * @param srcURL 原圖地址 * @param deskURL 縮略圖地址 * @param comBase 壓縮基數 * @param scale 壓縮限制(寬/高)比例 一般用1: * 當scale>=1,縮略圖height=comBase,width按原圖寬高比例;若scale<1,縮略圖width=comBase,height按原圖寬高比例 * @throws Exception * @author shenbin * @createTime 2014-12-16 * @lastModifyTime 2014-12-16 */ public static void saveMinPhoto(String srcURL, String deskURL, double comBase, double scale) throws Exception { File srcFile = new java.io.File(srcURL); Image src = ImageIO.read(srcFile); int srcHeight = src.getHeight(null); int srcWidth = src.getWidth(null); int deskHeight = 0;// 縮略圖高 int deskWidth = 0;// 縮略圖寬 double srcScale = (double) srcHeight / srcWidth; /**縮略圖寬高算法*/ if ((double) srcHeight > comBase || (double) srcWidth > comBase) { if (srcScale >= scale || 1 / srcScale > scale) { if (srcScale >= scale) { deskHeight = (int) comBase; deskWidth = srcWidth * deskHeight / srcHeight; } else { deskWidth = (int) comBase; deskHeight = srcHeight * deskWidth / srcWidth; } } else { if ((double) srcHeight > comBase) { deskHeight = (int) comBase; deskWidth = srcWidth * deskHeight / srcHeight; } else { deskWidth = (int) comBase; deskHeight = srcHeight * deskWidth / srcWidth; } } } else { deskHeight = srcHeight; deskWidth = srcWidth; } BufferedImage tag = new BufferedImage(deskWidth, deskHeight, BufferedImage.TYPE_3BYTE_BGR); tag.getGraphics().drawImage(src, 0, 0, deskWidth, deskHeight, null); //繪制縮小后的圖 FileOutputStream deskImage = new FileOutputStream(deskURL); //輸出到文件流 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(deskImage); encoder.encode(tag); //近JPEG編碼 deskImage.close(); } public static void main(String args[]) throws Exception { // ImageCompressUtil.zipImageFile("C:\\Users/*/\\1\\Desktop\\1.png", 1280, 1280, 1f, "-副本"); ImageCompressUtil.saveMinPhoto("C:\\Users\\1\\Desktop\\1.png", "C:\\Users\\1\\Desktop\\1-副本1.png", 500, 1); } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看