`
edwin492
  • 浏览: 115770 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于图片的一些处理

阅读更多

一些图片处理:

 

//两张图片合成	
 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, '_')应用正则,得去学习学习正则。
 
分享到:
评论

相关推荐

    图像处理常用图片

    在图像处理领域,"图像处理常用图片"是一个重要的概念,这些图片因其特殊性质或历史地位,成为了研究人员和工程师测试和验证算法的标准数据集。描述中提到的“lena”和“cameraman”就是两个非常著名的图像,它们在...

    数字图像处理经典图片库

    "数字图像处理经典图片库"包含了一些标志性的图像,如Lena、Cameraman和Couple,它们分别代表了不同的应用场景和挑战。 1. Lena 图像:Lena 是最著名的图像处理测试图像之一,源于1972年《美国摄影》杂志上的一张...

    数字图像处理常用图片库

    本文将深入探讨“数字图像处理常用图片库”这一主题,其中包括一些经典的测试图像,如lena和cameraman等。 数字图像处理是通过计算机对图像进行操作以改善质量、提取特征或分析信息的过程。在这个过程中,测试图像...

    图像处理21张经典图片 各种格式 经典图片.rar

    这个名为"图像处理21张经典图片 各种格式 经典图片.rar"的压缩包文件包含了21张广泛使用的图像,每张图片可能有不同的格式,这为分析、实验和演示提供了丰富的素材。这些图像在图像处理和计算机视觉界具有很高的知名...

    数字图像处理经典测试图片全集

    在数字图像处理领域,经典测试图片是不可或缺的资源,它们被广泛用于算法验证、性能评估以及新方法的开发。这个压缩包包含了一些最知名的图像,如Lenna、Barbara、Baboon和Pepper,这些都是无压缩的BMP格式,确保了...

    数字图像处理常用图片BMP

    数字图像处理经典图片BMP通常是一些常用的测试图像,如Lena、Barbara、Peppers等,这些图像在学术研究和软件开发中被广泛使用,用来检验和展示各种图像处理技术的效果,如滤波、增强、分割、编码等。 总结来说,...

    图像处理经典标准图片lena图等

    在图像处理领域,经典的标准图片是用来测试和展示各种算法效果的重要工具。这些图片因其特性而被广泛使用,比如它们的复杂性、清晰度或者颜色分布。"lena"图是其中最为著名的代表之一,它在图像处理的历史上占据了...

    数字图像处理中常用到图片集

    本文将深入探讨数字图像处理中的关键概念,并围绕"标准图片集"这一主题,详细介绍其在实际应用中的价值。 1. 数字图像处理基础:数字图像处理是计算机科学的一个分支,主要涉及图像的获取、分析、理解和操作。这个...

    数字图像处理图片.zip

    "数字图像处理图片.zip"这个压缩包文件显然包含了与这个主题相关的图像资源,为学习者提供了丰富的实践材料。接下来,我们将深入探讨数字图像处理的基本概念、关键技术和应用。 数字图像处理是计算机科学的一个分支...

    学习图像处理最常用的图片(很齐全很强大)

    在图像处理领域,掌握一些常用且全面的图片资源至关重要,因为它们可以帮助我们更好地理解和实践各种图像处理技术。这个名为“学习图像处理最常用的图片(很齐全很强大)”的压缩包,显然包含了丰富的图片素材,适合...

    20个图像处理经典标准图片文件

    在图像处理领域,标准图片文件通常用于测试和展示算法的效果,因为它们有着广泛认可的特性,可以帮助研究人员和工程师评估和比较不同的图像处理技术。这里提到的"20个图像处理经典标准图片文件"包含了几个非常知名的...

    图像处理标准图像库(内含44张图)

    "图像处理标准图像库(内含44张图)"就是一个这样的资源,它提供了44张不同类型的图片,包括16张彩色图片和28张灰度图,可以满足多种图像处理任务的需求。 1. **彩色图像与灰度图像**: - 彩色图像由红绿蓝(RGB)...

    图形图像处理经典图片素材

    本资源“图形图像处理经典图片素材”是一份专为Matlab仿真设计的素材集合,旨在为从事图像处理研究和实践的用户提供丰富的实验数据和参考示例。 Matlab是一款强大的数学计算软件,同时它也提供了丰富的图像处理工具...

    数字图像处理(第三版)图片素材

    其配套的图片素材是学习过程中不可或缺的一部分,能够帮助读者直观地理解复杂的图像处理概念和技术。 在图像处理领域,我们首先会接触到的基本概念是像素。像素是构成图像的基本单元,每个像素都包含了颜色和亮度...

    数字图像处理图片素材库

    本资源“数字图像处理图片素材库”提供了一系列的标准测试图像,是研究和学习图像处理的重要参考资料。 首先,我们要了解什么是数字图像。数字图像是一种以数字形式表示的图像,由像素(Picture Element)阵列组成...

    冈萨雷斯图像处理图片

    《冈萨雷斯图像处理图片》是一份专注于数字图像处理的学习资源,主要针对使用冈萨雷斯的理论进行实践操作。这份资料包含了一系列与图像处理相关的图片,适用于那些正在学习或研究数字图像处理技术的人群,尤其是对...

    数字图像处理matlab版配套资料(图片和源码)

    本资料包——“冈萨雷斯数字图像处理MATLAB版配套资料”,旨在为学习者提供实践操作的素材,包括图片实例和源代码,以帮助深入理解和应用相关知识。 1. 冈萨雷斯《数字图像处理》:这是一本经典教材,由著名学者...

    C#图像处理(六项图片处理功能)及截图工具

    该资源包含完整项目、注释、报告,非常利于学习与研究!...4、打开一张图像或用剪切板的图像做以下处理 (1)图片灰度化 (2)图片浮雕效果 (3)图片黑白效果 (4)图片柔化效果 (5)图片锐化效果 (6)图片雾化效果

    数字图像处理标准测试图片

    在数字图像处理领域,标准测试图片是至关重要的资源,它们被广泛用于验证和比较不同的算法、软件或硬件在处理图像时的表现。这些图片通常具有已知的特性,比如特定的纹理、颜色分布、边缘或者噪声,能够有效地检测...

    数字图像处理标准图片

    在数字图像处理领域,"标准图片"是一种至关重要的资源,它们通常被用来验证和测试不同的算法、软件或硬件系统。这些图片具有已知的特性,能够帮助研究人员和工程师评估其处理技术的效果。"数字图像处理标准图片"这个...

Global site tag (gtag.js) - Google Analytics