首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

关于图片的一些处置

2012-10-18 
关于图片的一些处理一些图片处理:?//两张图片合成 public static void composePic(String filesrc,String

关于图片的一些处理

一些图片处理:

?

//两张图片合成 public static void composePic(String filesrc,String logosrc,String outsrc,int x,int y) throws Exception {    try {        File bgfile = new File(filesrc);        Image bg_src = javax.imageio.ImageIO.read(bgfile);                File logofile = new File(logosrc);        Image logo_src = javax.imageio.ImageIO.read(logofile);                int bg_width = bg_src.getWidth(null);        int bg_height = bg_src.getHeight(null);        int logo_width = logo_src.getWidth(null);;        int logo_height = logo_src.getHeight(null);        BufferedImage tag = new BufferedImage(bg_width, bg_height, BufferedImage.TYPE_INT_RGB);                Graphics2D g2d = tag.createGraphics();        g2d.drawImage(bg_src, 0, 0, bg_width, bg_height, null);                g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,1.0f)); //透明度设置开始          g2d.drawImage(logo_src,x,y,logo_width,logo_height, null);                    g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); //透明度设置 结束                FileOutputStream out = new FileOutputStream(outsrc);        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);        encoder.encode(tag);        out.close();    }catch (Exception e) {        e.printStackTrace();        log.info("图片合成失败:" + e.getMessage());        throw new Exception(e);    }  }//生成指定大小的图片 public static void createImg(String path, int width, int height) throws Exception{     File file = new File(path);     BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);           Graphics2D g2 = (Graphics2D)bi.getGraphics();           g2.setBackground(Color.WHITE);           g2.clearRect(0, 0, width, height);           g2.setPaint(Color.RED);           ImageIO.write(bi, "jpg", file);    }

?//图片base64编码与解码

?

public class ImgConvert{    public static String getBase64(String path) throws Exception    {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理        InputStream in = null;        byte[] data = null;        if(null == path || "".equals(path)) return "";        //读取图片字节数组        File file = new File(path);        in = new FileInputStream(file);                data = new byte[in.available()];        in.read(data);        in.close();        //对字节数组Base64编码        BASE64Encoder encoder = new BASE64Encoder();        return encoder.encode(data);//返回Base64编码过的字节数组字符串    }        public static boolean getImage(String imgStr, String path)    {//对字节数组字符串进行Base64解码并生成图片        if (imgStr == null) //图像数据为空            return false;        BASE64Decoder decoder = new BASE64Decoder();        try         {            //Base64解码            byte[] b = decoder.decodeBuffer(imgStr);            for(int i=0;i<b.length;++i)            {                if(b[i]<0)                {//调整异常数据                    b[i]+=256;                }            }            //生成jpeg图片            OutputStream out = new FileOutputStream(path);                out.write(b);            out.flush();            out.close();            return true;        }         catch (Exception e)         {            return false;        }    }}
?

?

//图片上添加文字 public class ImgMessage {public static void main(String[] args) {String url = "D:\\Blue.jpg";}public String writeMessage(String message, String url, int offsetTop, int offsetLeft) {try {// 读取模板图片内容JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(new FileInputStream(url)); // 读取图片路径BufferedImage image = decoder.decodeAsBufferedImage();Graphics2D g = image.createGraphics();// 得到图形上下文g.setColor(Color.BLACK); // 设置画笔颜色RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);rh.put(RenderingHints.KEY_STROKE_CONTROL,RenderingHints.VALUE_STROKE_PURE);rh.put(RenderingHints.KEY_ALPHA_INTERPOLATION,RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);rh.put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);rh.put(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);g.setRenderingHints(rh);g.setColor(Color.black);Font font = new Font("宋体", Font.BOLD, 12);g.setFont(font);FontMetrics fm = g.getFontMetrics(font);// 设置换行操作int fontHeight = fm.getHeight();// 字符的高度int rowIndex = 1;int left = offsetLeft;for (int i = 0; i < message.length(); i++) {char c = message.charAt(i);int charWidth = fm.charWidth(c); // 字符的宽度// 另起一行if (Character.isISOControl(c)) {rowIndex++;left = offsetLeft;}g.drawString(String.valueOf(c), left, offsetTop + rowIndex* fontHeight); // 把一个个写到图片上left += charWidth; // 设置下字符的间距}g.dispose();String outFileName = url; // 图片要存储的路径FileOutputStream out = new FileOutputStream(outFileName);// 通过流操作把文字图片结合JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(image);out.close();return outFileName;} catch (Exception e) {e.printStackTrace();return null;}}}

?//图片裁剪

?

/**     * 按前台截取的大小对原图进行截取     *      * @param img     *            原图文件     * @param dest     *            保存地址     * @param top     *            左上角点的Y     * @param left     *            左上角点的X     * @param width     *            图片的宽度     * @param height     *            图片的高度     * @param type      *            图片类型     * @return     * @throws IOException     */    public static void resizeImage(File img, String dest, int top, int left,            int width, int height, String type) throws Exception {       try{           File fileDest = new File(dest);           BufferedImage bi = (BufferedImage) ImageIO.read(img);           BufferedImage bi_cropper = bi.getSubimage(left, top, width, height);           ImageIO.write(bi_cropper, type, fileDest);       }catch(Exception e){           e.printStackTrace();           log.error("图片裁剪失败:" + e.getMessage());           throw new Exception(e.getMessage());       }    }        /**     * 对gif图形进行裁剪     * @param img     * @param dest     * @param top     * @param left     * @param width     * @param height     */    public void resizeGifImage(File img, String dest, int top, int left, int width, int height){        File des = new File(dest);        GifImage gif;        try {            gif = GifDecoder.decode(img);            Rectangle rect = new Rectangle(top, left, width, height-3);            GifImage cropIMG = GifTransformer.crop(gif, rect);            GifEncoder.encode(cropIMG, des);        } catch (IOException e) {            e.printStackTrace();        }    }

?jquery插件:

easydrag: 一个简单的拖放插件,可用于获取拖放div的id再获取位置(top,left),有需要可以通过iframe进行限制以获取准确的top,left。jquery.form: 以ajax方式提交form表单。jcarousel: 可横向和纵向的滚动显示图片。jcrop: 裁剪插件。kindeditor:一个在线编辑插件,部分功能可单独使用,如取色器。

?java以积竖线分隔split("\\|");

js的replace替换所有逗号replace(/,/g, '_')应用正则,得去学习学习正则。
?

热点排行