当前位置:编程学习 > JAVA >>

java 实现在线图片编辑

请问下哪位用java 实现过在线编辑图片的功能?
就是可以在页面上修改图片,比如在图片上画个矩形框,类似PS,然后点击一个按钮生成修改后的图片到应用服务器上。
在页面上修改图片 没有思路哦!
请各位大侠指点下!

谢谢! --------------------编程问答-------------------- java能编辑图片吗?没有听说过,帮顶一下~~ --------------------编程问答-------------------- 应该不可能把。。你这就是可以也不是JAVA的功能。。你应该属于前台操作图片把。。要是有也是一个插件。。 --------------------编程问答-------------------- 呃,听别人说过ImageJ这个开源组件,没用过。
有用过的指导下,这个开源组件能实现在线编辑图片的功能么? --------------------编程问答-------------------- 还有个这个开源的:Jgraph、不过没用过、


有个在线编辑图片的网站
http://snipshot.com/
貌似是收费的 = =、 --------------------编程问答-------------------- 同事说让前台用JS实现在图片上画矩形,这个可以实现,但我在想如何将改变后的图片保存?
也就是后台如何接收改变后的图片的信息再生成新的文件?
期待高人指点! --------------------编程问答-------------------- http://snipshot.com/ 把源码下来,研究下吧。 --------------------编程问答-------------------- 请问问题解决了吗,我也遇上了这个问题,求解答,求分享? --------------------编程问答-------------------- 简单的剪辑的话可以用  JS 框架 Jcrop
百度之。 --------------------编程问答--------------------

package com.bean.tuil;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;

import javax.imageio.ImageIO;

/**
 * 对图片的操作
 * 
 * @author yangyz
 * 
 */
public class ImageControl {
    // 添加字体的属性值
    private Font font = new Font("", Font.PLAIN, 12);

    private Graphics2D g = null;

    private int fontsize = 0;

    private int x = 0;

    private int y = 0;

    private String destDir = "F:\\";

    public void setDestDir(String path) {
        this.destDir = path;
        // 目录不存在
        File file = new File(path);
        if (!file.exists()) {
            file.mkdir();
        }
    }

    /**
     * 导入本地图片到缓冲中
     * 
     * @param imgPath
     * @return
     */
    public BufferedImage loadImageLocal(String imgPath) {
        try {
            return ImageIO.read(new File(imgPath));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 读取网络中的图片到缓冲
     * 
     * @param imgPath
     * @return
     */
    public BufferedImage loadImageUrl(String imgPath) {
        URL url;
        try {
            url = new URL(imgPath);
            return ImageIO.read(url);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 生成新图片到本地
     * 
     * @param newImage
     *            新名字
     * @param img
     *            缓冲
     * @param type
     *            类别
     */
    public void writeImageLocal(BufferedImage img, String type) {
        if (img != null) {
            File outputFile = new File(this.destDir + new Date().getTime()
                    + "." + type);
            try {
                ImageIO.write(img, type, outputFile);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    /**
     * 设置文字字体,大小
     * 
     * @param fontStyle
     * @param fontSize
     */
    public void setFont(String fontStyle, int fontSize) {
        this.fontsize = fontSize;
        this.font = new Font(fontStyle, Font.PLAIN, fontSize);
    }

    /**
     * 单行文本
     * 
     * @param img
     * @param content
     * @param x
     * @param y
     * @return
     */
    public BufferedImage modifyImage(BufferedImage img, Object content) {
        try {
            int w = img.getWidth();
            int h = img.getHeight();

            g = img.createGraphics();
            g.setColor(Color.RED);
            if (this.font != null) {
                g.setFont(this.font);
            }

            // 文字输出位置
            this.y = h - fontsize - 10;
            this.x = w - 70;

            if (content != null) {
                g.drawString(content.toString(), this.x, this.y);
            }
            g.dispose();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return img;
    }

    /**
     * 将两张图片合并
     * 
     * @param base
     * @param dest
     *            目标
     * @return
     */
    public BufferedImage modifyImageTogether(BufferedImage base,
            BufferedImage dest) {
        try {
            int w = base.getWidth();
            int h = base.getHeight();

            int dw = dest.getWidth();
            int dh = dest.getHeight();

            g = dest.createGraphics();
            AlphaComposite cp = AlphaComposite.getInstance(
                    AlphaComposite.SRC_OVER, 0.3f);
            g.setComposite(cp);
            g.drawImage(base, dw - w, dh - h, w, h, null);
            g.dispose();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dest;
    }

    /**
     * 改变图片大小
     * 
     * @param img
     * @param weight
     * @param height
     * @return
     */
    public BufferedImage modifySize(BufferedImage img, int width, int height) {
        try {
            int w = img.getWidth();
            int h = img.getHeight();

            double wRation = (new Integer(width)).doubleValue() / w;
            double hRation = (new Integer(height)).doubleValue() / h;
            Image image = img.getScaledInstance(width, height,
                    Image.SCALE_SMOOTH);

            AffineTransformOp op = new AffineTransformOp(AffineTransform
                    .getScaleInstance(wRation, hRation), null);

            image = op.filter(img, null);

            img = (BufferedImage) image;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return img;
    }

    public BufferedImage changeSize(BufferedImage img, int width, int height) {
        try {
            BufferedImage distin = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            g = distin.createGraphics();
            g.drawImage(img, 0, 0, width, height, null);
            return distin;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 截图
     * 
     * @param img
     * @param x
     * @param y
     * @param width
     * @param height
     * @return
     */
    public BufferedImage cutImage(BufferedImage img, int x, int y, int width,
            int height) {
        BufferedImage distin = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);
        try {
            g = distin.createGraphics();
            // 原图的大小,以及截图的坐标及大小
            g.drawImage(img, 0, 0, width, height, x, y, width, height, null);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return distin;
    }

    /**
     * 测试
     * 
     * @param args
     */
    public static void main(String[] args) {
        ImageControl ic = new ImageControl();

        // 两张图片合并
        BufferedImage d = ic
                .loadImageLocal("C:\\Documents and Settings\\yangyz\\Desktop\\MyAPP\\catergory_list_right.jpg");
        BufferedImage b = ic
                .loadImageLocal("C:\\Documents and Settings\\yangyz\\Desktop\\MyAPP\\ico_exPlore_home_sports_bundles_selected.png");
        ic.setDestDir("f:\\temp\\");
        ic.writeImageLocal(ic.modifyImageTogether(b, d), "jpg");

        // 在向生成的图片添加文字
        ic.modifyImage(d, "Troy Young");
        // // 根据坐标截图
        // BufferedImage d = ic
        // .loadImageLocal("C:\\Documents and Settings\\yangyz\\Desktop\\MyAPP\\catergory_list_right.jpg");
        // ic.setDestDir("f:\\temp\\");
        ic.writeImageLocal(ic.cutImage(d, 30, 20, 200, 100), "jpg");
        // 修改图片大小
        // BufferedImage d = ic
        // .loadImageLocal("C:\\Documents and Settings\\yangyz\\Desktop\\MyAPP\\catergory_list_right.jpg");
        // ic.setDestDir("f:\\temp\\");
        ic.writeImageLocal(ic.modifySize(d, 210, 175), "jpg");

        System.out.println("成功");
    }
}
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,