国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
JAVA生成圖片縮略圖、JAVA截取圖片局部內(nèi)容

 

 

package com.ares.image.test;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Arrays;import javax.imageio.ImageIO;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.ares.slf4j.test.Slf4jUtil;/** * <p>Title: ImageUtil </p> * <p>Description: 使用JDK原生態(tài)類生成圖片縮略圖和裁剪圖片 </p> * <p>Email: icerainsoft@hotmail.com </p>  * @author Ares * @date 2014年10月28日 上午10:24:26 */public class ImageUtil {    static {        Slf4jUtil.buildSlf4jUtil().loadSlf4j();    }    private Logger log = LoggerFactory.getLogger(getClass());        private static String DEFAULT_PREVFIX = "thumb_";    private static Boolean DEFAULT_FORCE = false;        /**     * <p>Title: thumbnailImage</p>     * <p>Description: 根據(jù)圖片路徑生成縮略圖 </p>     * @param imagePath    原圖片路徑     * @param w            縮略圖寬     * @param h            縮略圖高     * @param prevfix    生成縮略圖的前綴     * @param force        是否強(qiáng)制按照寬高生成縮略圖(如果為false,則生成最佳比例縮略圖)     */    public void thumbnailImage(File imgFile, int w, int h, String prevfix, boolean force){        if(imgFile.exists()){            try {                // ImageIO 支持的圖片類型 : [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif]                String types = Arrays.toString(ImageIO.getReaderFormatNames());                String suffix = null;                // 獲取圖片后綴                if(imgFile.getName().indexOf(".") > -1) {                    suffix = imgFile.getName().substring(imgFile.getName().lastIndexOf(".") + 1);                }// 類型和圖片后綴全部小寫,然后判斷后綴是否合法                if(suffix == null || types.toLowerCase().indexOf(suffix.toLowerCase()) < 0){                    log.error("Sorry, the image suffix is illegal. the standard image suffix is {}." + types);                    return ;                }                log.debug("target image's size, width:{}, height:{}.",w,h);                Image img = ImageIO.read(imgFile);                if(!force){                    // 根據(jù)原圖與要求的縮略圖比例,找到最合適的縮略圖比例                    int width = img.getWidth(null);                    int height = img.getHeight(null);                    if((width*1.0)/w < (height*1.0)/h){                        if(width > w){                            h = Integer.parseInt(new java.text.DecimalFormat("0").format(height * w/(width*1.0)));                            log.debug("change image's height, width:{}, height:{}.",w,h);                        }                    } else {                        if(height > h){                            w = Integer.parseInt(new java.text.DecimalFormat("0").format(width * h/(height*1.0)));                            log.debug("change image's width, width:{}, height:{}.",w,h);                        }                    }                }                BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);                Graphics g = bi.getGraphics();                g.drawImage(img, 0, 0, w, h, Color.LIGHT_GRAY, null);                g.dispose();                String p = imgFile.getPath();                // 將圖片保存在原目錄并加上前綴                ImageIO.write(bi, suffix, new File(p.substring(0,p.lastIndexOf(File.separator)) + File.separator + prevfix +imgFile.getName()));            } catch (IOException e) {               log.error("generate thumbnail image failed.",e);            }        }else{            log.warn("the image is not exist.");        }    }        public void thumbnailImage(String imagePath, int w, int h, String prevfix, boolean force){        File imgFile = new File(imagePath);        thumbnailImage(imgFile, w, h, prevfix, force);    }        public void thumbnailImage(String imagePath, int w, int h, boolean force){        thumbnailImage(imagePath, w, h, DEFAULT_PREVFIX, force);    }        public void thumbnailImage(String imagePath, int w, int h){        thumbnailImage(imagePath, w, h, DEFAULT_FORCE);    }        public static void main(String[] args) {        new ImageUtil().thumbnailImage("imgs/Tulips.jpg", 100, 150);    }}

 效果:(原圖是電腦"圖片"文件夾下的郁金香圖片,大小1024*768,生成的圖片為200*150大小,保持4:3的比例)

 

JAVA 截取圖片局部內(nèi)容:

package com.ares.image.test;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.OutputStream;import java.util.Arrays;import javax.imageio.ImageIO;import javax.imageio.ImageReadParam;import javax.imageio.ImageReader;import javax.imageio.stream.ImageInputStream;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.ares.slf4j.test.Slf4jUtil;/** * <p>Title: ImageUtil </p> * <p>Description: </p> * <p>Email: icerainsoft@hotmail.com </p>  * @author Ares * @date 2014年10月28日 上午10:24:26 */public class ImageUtil {    static {        Slf4jUtil.buildSlf4jUtil().loadSlf4j();    }    private Logger log = LoggerFactory.getLogger(getClass());        private static String DEFAULT_THUMB_PREVFIX = "thumb_";    private static String DEFAULT_CUT_PREVFIX = "cut_";    private static Boolean DEFAULT_FORCE = false;            /**     * <p>Title: cutImage</p>     * <p>Description:  根據(jù)原圖與裁切size截取局部圖片</p>     * @param srcImg    源圖片     * @param output    圖片輸出流     * @param rect        需要截取部分的坐標(biāo)和大小     */    public void cutImage(File srcImg, OutputStream output, java.awt.Rectangle rect){        if(srcImg.exists()){            java.io.FileInputStream fis = null;            ImageInputStream iis = null;            try {                fis = new FileInputStream(srcImg);                // ImageIO 支持的圖片類型 : [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif]                String types = Arrays.toString(ImageIO.getReaderFormatNames()).replace("]", ",");                String suffix = null;                // 獲取圖片后綴                if(srcImg.getName().indexOf(".") > -1) {                    suffix = srcImg.getName().substring(srcImg.getName().lastIndexOf(".") + 1);                }// 類型和圖片后綴全部小寫,然后判斷后綴是否合法                if(suffix == null || types.toLowerCase().indexOf(suffix.toLowerCase()+",") < 0){                    log.error("Sorry, the image suffix is illegal. the standard image suffix is {}." + types);                    return ;                }                // 將FileInputStream 轉(zhuǎn)換為ImageInputStream                iis = ImageIO.createImageInputStream(fis);                // 根據(jù)圖片類型獲取該種類型的ImageReader                ImageReader reader = ImageIO.getImageReadersBySuffix(suffix).next();                reader.setInput(iis,true);                ImageReadParam param = reader.getDefaultReadParam();                param.setSourceRegion(rect);                BufferedImage bi = reader.read(0, param);                ImageIO.write(bi, suffix, output);            } catch (FileNotFoundException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            } finally {                try {                    if(fis != null) fis.close();                    if(iis != null) iis.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }else {            log.warn("the src image is not exist.");        }    }        public void cutImage(File srcImg, OutputStream output, int x, int y, int width, int height){        cutImage(srcImg, output, new java.awt.Rectangle(x, y, width, height));    }        public void cutImage(File srcImg, String destImgPath, java.awt.Rectangle rect){        File destImg = new File(destImgPath);        if(destImg.exists()){            String p = destImg.getPath();            try {                if(!destImg.isDirectory()) p = destImg.getParent();                if(!p.endsWith(File.separator)) p = p + File.separator;                cutImage(srcImg, new java.io.FileOutputStream(p + DEFAULT_CUT_PREVFIX + "_" + new java.util.Date().getTime() + "_" + srcImg.getName()), rect);            } catch (FileNotFoundException e) {                log.warn("the dest image is not exist.");            }        }else log.warn("the dest image folder is not exist.");    }        public void cutImage(File srcImg, String destImg, int x, int y, int width, int height){        cutImage(srcImg, destImg, new java.awt.Rectangle(x, y, width, height));    }        public void cutImage(String srcImg, String destImg, int x, int y, int width, int height){        cutImage(new File(srcImg), destImg, new java.awt.Rectangle(x, y, width, height));    }    /**     * <p>Title: thumbnailImage</p>     * <p>Description: 根據(jù)圖片路徑生成縮略圖 </p>     * @param imagePath    原圖片路徑     * @param w            縮略圖寬     * @param h            縮略圖高     * @param prevfix    生成縮略圖的前綴     * @param force        是否強(qiáng)制按照寬高生成縮略圖(如果為false,則生成最佳比例縮略圖)     */    public void thumbnailImage(File srcImg, OutputStream output, int w, int h, String prevfix, boolean force){        if(srcImg.exists()){            try {                // ImageIO 支持的圖片類型 : [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif]                String types = Arrays.toString(ImageIO.getReaderFormatNames()).replace("]", ",");                String suffix = null;                // 獲取圖片后綴                if(srcImg.getName().indexOf(".") > -1) {                    suffix = srcImg.getName().substring(srcImg.getName().lastIndexOf(".") + 1);                }// 類型和圖片后綴全部小寫,然后判斷后綴是否合法                if(suffix == null || types.toLowerCase().indexOf(suffix.toLowerCase()+",") < 0){                    log.error("Sorry, the image suffix is illegal. the standard image suffix is {}." + types);                    return ;                }                log.debug("target image's size, width:{}, height:{}.",w,h);                Image img = ImageIO.read(srcImg);                // 根據(jù)原圖與要求的縮略圖比例,找到最合適的縮略圖比例                if(!force){                    int width = img.getWidth(null);                    int height = img.getHeight(null);                    if((width*1.0)/w < (height*1.0)/h){                        if(width > w){                            h = Integer.parseInt(new java.text.DecimalFormat("0").format(height * w/(width*1.0)));                            log.debug("change image's height, width:{}, height:{}.",w,h);                        }                    } else {                        if(height > h){                            w = Integer.parseInt(new java.text.DecimalFormat("0").format(width * h/(height*1.0)));                            log.debug("change image's width, width:{}, height:{}.",w,h);                        }                    }                }                BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);                Graphics g = bi.getGraphics();                g.drawImage(img, 0, 0, w, h, Color.LIGHT_GRAY, null);                g.dispose();                // 將圖片保存在原目錄并加上前綴                ImageIO.write(bi, suffix, output);                output.close();            } catch (IOException e) {               log.error("generate thumbnail image failed.",e);            }        }else{            log.warn("the src image is not exist.");        }    }    public void thumbnailImage(File srcImg, int w, int h, String prevfix, boolean force){        String p = srcImg.getAbsolutePath();        try {            if(!srcImg.isDirectory()) p = srcImg.getParent();            if(!p.endsWith(File.separator)) p = p + File.separator;            thumbnailImage(srcImg, new java.io.FileOutputStream(p + prevfix +srcImg.getName()), w, h, prevfix, force);        } catch (FileNotFoundException e) {            log.error("the dest image is not exist.",e);        }    }        public void thumbnailImage(String imagePath, int w, int h, String prevfix, boolean force){        File srcImg = new File(imagePath);        thumbnailImage(srcImg, w, h, prevfix, force);    }        public void thumbnailImage(String imagePath, int w, int h, boolean force){        thumbnailImage(imagePath, w, h, DEFAULT_THUMB_PREVFIX, DEFAULT_FORCE);    }        public void thumbnailImage(String imagePath, int w, int h){        thumbnailImage(imagePath, w, h, DEFAULT_FORCE);    }        public static void main(String[] args) {        new ImageUtil().thumbnailImage("imgs/Tulips.jpg", 150, 100);        new ImageUtil().cutImage("imgs/Tulips.jpg","imgs", 250, 70, 300, 400);    }}

效果如下:(使用在上傳圖片時(shí)取縮略圖和截圖的地方,例如,頭像截取并縮略)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java 生成圖片縮略圖
java圖片裁剪和java生成縮略圖
java 圖片縮略圖的兩種方法
java實(shí)現(xiàn)二維碼的生成和解析:QRCode、zxing 兩種方式
java圖片處理 (文字水印、圖片水印、縮放、補(bǔ)白)
java實(shí)現(xiàn)的圖片縮放 壓縮 裁剪工具!找了很久,市面上再也找不到比它縮放效果還好的代碼了的代碼詳情
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服