VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 901|回复: 8

画好图了,如何生成一个图片文件,比如bmp格式的

[复制链接]

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-3-4 17:30:02 | 显示全部楼层 |阅读模式
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestDraw extends Frame{
        public TestDraw(String title){
            super(title);
            addWindowListener(new WindowAdapter(){
                    public void windowClosing(WindowEvent evt){
                            System.exit(0);
                    }
            });
            setSize(1024,768);
            setVisible(true);
           }
        public void paint(Graphics g){
                int width2=120;
                g.fillArc(512, 384, 2*width2, 2*width2, 0, 360);
        }
}
源代码如上,接下来该怎么写呢?使画好的图能生成一个图片文件?谢谢大家
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-19 00:00:01 | 显示全部楼层
这里有个截图的代码,你可以参考它把图输出,不过这里生成的是jpg       

public static void drawImg() {
                try {
                        int w = 0, h = 0, o_w = 0, o_h = 0, l = 0, t = 0;
                        //w-目标图像宽,h-目标图像高,o_w-待裁剪的图像宽,o_h-待裁剪的图像高,l-剪切部分距离待裁图像左边距,t-剪切部分距离待裁图像上边距
                        BufferedImage image = new BufferedImage(w, h,
                                        BufferedImage.TYPE_INT_RGB);
                        Graphics g = image.getGraphics();
                        Image img = Toolkit.getDefaultToolkit().getImage("c:\\test.jpg");//取到源图片
                        System.out.println("img-width=" + img.getWidth(null));
                        System.out.println("img-height=" + img.getHeight(null));
                        g.setColor(Color.white); //图片底色为白色
                        g.fillRect(0, 0, w, h); //先画一个白底矩形
                        g.drawImage(img, 0, 0, o_w, o_h, null);//先将图片定为当前放大缩小后的大小
                        g.dispose();
                        g.drawImage(img, 0, 0, w, h, l, t, (l + w), (h + t), Color.WHITE,
                                        null);//裁剪
                        g.dispose();
                        FileOutputStream outfile = new FileOutputStream("d:\\test1.jpg");//输出图片
                        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outfile);
                        encoder.encode(image);//输出图片
                        outfile.close();
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-5-19 13:45:01 | 显示全部楼层
java好像不支持bmp格式的,jpg的可以的。这个在网上有好多。jinm1976 方法可行。或者在网上找java生产的随机验证码的实现方式都可以的。
回复

使用道具 举报

1

主题

51

帖子

32.00

积分

新手上路

Rank: 1

积分
32.00
发表于 2020-5-20 12:30:01 | 显示全部楼层
ls的方法的确很不错
回复

使用道具 举报

0

主题

23

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
发表于 2020-5-21 07:45:01 | 显示全部楼层
用javax.imageio.ImageIO类.非常简单.它有一个静态方法直接保存图像,可以是bmp,jpg,png等,但好像gif不行.
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-5-21 20:00:01 | 显示全部楼层
我是在public void paint(Graphics g){}里画的图,那些代码具体应该加在哪里好呢
回复

使用道具 举报

0

主题

11

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-5-22 17:15:01 | 显示全部楼层
bmp是位图
你要进行编码的……
记录每个点的信息……
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-5-23 17:45:01 | 显示全部楼层
public void paint(Graphics g){
                int width2=120;
                g.fillArc(512, 384, 2*width2, 2*width2, 0, 360);
        }
我是在public void paint(Graphics g){}里画的图,那些代码具体应该加在哪里好呢?
我按jinm1976的方法试过了,但是没有生成图片.
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-5-31 11:00:02 | 显示全部楼层
还是不许啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表