`

applet中保存canvas中的图片

阅读更多

效果图如下:


 

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.CubicCurve2D;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
 
public class ComponentToImage extends Canvas {
    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        int w = getWidth();
        int h = getHeight();
        g2.setPaint(getBackground());
        g2.fillRect(0,0,w,h);
        g2.setPaint(Color.red);
        g2.draw(new CubicCurve2D.Double(w/4, h*3/4, -w*3/8, -h/4,
                                        w*11/8, -h/4, w*3/4, h*3/4));
    }
 
    private BufferedImage makeImage() {
        int w = getWidth();
        int h = getHeight();
        int type = BufferedImage.TYPE_INT_RGB;
        BufferedImage image = new BufferedImage(w,h,type);
        Graphics2D g2 = image.createGraphics();
        paint(g2);
        g2.dispose();
        return image;
    }
 
    private void save(BufferedImage image) {
        String ext = "jpg";  // png, bmp (j2se 1.5+), gif (j2se 1.6+)
        File file = new File("componentToImage." + ext);
        try {
            ImageIO.write(image, ext, file);
        } catch(IOException e) {
            System.out.println("write error: " + e.getMessage());
        }
    }
 
    private void saveToFile() {
        new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(1000);
                } catch(InterruptedException e) {
                    System.out.println("interrupted");
                }
                save(makeImage());
            }
        }).start();
    }
 
    public static void main(String[] args) {
        ComponentToImage test = new ComponentToImage();
        Frame f = new Frame();
        f.addWindowListener(closer);
        f.add(test);
        f.setSize(400,400);
        f.setLocation(200,200);
        f.setVisible(true);
        test.saveToFile();
    }
 
    private static WindowListener closer = new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    };
}

 
 

  • 大小: 12.5 KB
分享到:
评论

相关推荐

    applet截取屏幕图片

    以下是一个简单的Applet类,用于截取指定区域的屏幕并保存为图片: ```java import java.awt.*; import java.awt.image.BufferedImage; import javax.swing.JApplet; import java.io.File; import java.io....

    图片浏览小程序(java+applet).zip

    在这个图片浏览小程序中,Java可能用于实现图片的加载、显示、缩放等核心功能,同时也可能涉及到文件I/O操作,用于读取和保存用户的浏览记录或者图片信息。 **Java Applet技术:** Applet是Java的一种特殊类型的...

    网页截图工具,采用 Java Applet 实现

    网页截图工具是网络浏览中非常实用的功能,它允许用户快速捕获并保存当前网页的图像。在本案例中,我们讨论的是一款基于Java Applet技术实现的网页截图工具。Java Applet是一种小型的Java程序,可以在用户的Web...

    applet_poster.zip

    同时,`wx.downloadFile()`可用于下载远程图片并保存到本地,以便在海报上使用。 在实际开发中,海报工具类通常会封装这些操作,提供一个简单的API供其他组件或页面调用。例如,可能有一个`createPoster()`函数,...

    jbuilder2005开发applet游戏接触

    Applet是一种小型Java程序,可以在Web浏览器中运行。本文将通过一个简单的指法练习游戏实例,详细介绍如何使用JBuilder 2005开发Applet应用,涉及的知识点广泛,包括图形用户界面设计、动画处理、声音播放、事件处理...

    Java Applet版推箱子游戏.rar

    6. **文件读写**:游戏关卡信息可能保存在外部文件中,需要用到文件I/O操作来读取和存储关卡数据。 7. **异常处理**:在程序中加入适当的异常处理,可以提高程序的健壮性,避免因错误操作导致程序崩溃。 通过研究...

    java(applet小动画)

    在这个项目中,龟和兔的图片可能会作为`Image`对象加载,并通过`Graphics`的`drawImage()`方法在Applet的画布上绘制。 为了实现动画效果,程序会定期调用`repaint()`方法来重绘组件,每次重绘时根据时间或计数器...

    网页计算器

    在这个案例中,我们讨论的是一个使用Java Applet技术构建的网页计算器。Java Applet是早期Java技术的一种,它允许开发者创建可以在浏览器中运行的小型Java程序。 Java Applet的工作原理是:当用户访问包含Applet的...

    java中如何显示图形

    8. 图像IO:Java的`javax.imageio`包提供了读取和写入图像文件的功能,使得在程序中加载和保存图像变得简单。 总的来说,Java为图形显示提供了强大的支持,无论是简单的用户界面还是复杂的动画效果,都能通过AWT和...

    JSP-Web截屏控件

    在JSP项目中集成Web截屏控件,需要将相关的JavaScript库或Java Applet文件引入到页面中,然后通过JSP的脚本元素或自定义标签调用相关功能。对于复杂的项目,可能还需要考虑如何与后端服务器进行通信,例如使用Ajax...

    围棋对弈小程序

    不过,随着现代浏览器逐渐移除对Java Applet的支持,这种技术在新环境下可能面临兼容性问题,因此开发者可能需要考虑将其转换为更现代的Web技术,如JavaScript或HTML5 Canvas。 Eclipse是一个广泛使用的Java集成...

    JFreeChart Web例子

    1. **服务器端生成图表并以图片形式返回**:在服务器端使用JFreeChart生成图表,然后将其保存为图片文件(如JPEG或PNG),通过HTTP响应返回给客户端浏览器。 2. **使用Java Applet**:虽然Java Applet现在已经不...

    mario_JAVA源码_

    8. **文件I/O**:游戏可能保存玩家进度或读取配置信息,因此源码中可能包含文件读写操作。 通过分析和学习这个源码,开发者不仅可以巩固Java基础知识,还能深入了解游戏开发的流程和技术,提升自己的编程技能。对于...

    html 页面java摄像拍照程序

    在拍照程序中,canvas用于捕获来自摄像头的实时视频流,并可以进一步处理或保存为图片。 4. MediaStream Recording API:这个API允许开发者录制来自getUserMedia的MediaStream。在拍照程序中,我们可以使用它来捕获...

    java方面的基础试题

    保存Java源文件时,确保文件扩展名为`.java`,并在保存对话框中选择“所有文件(*.*)”作为文件类型,这是创建有效Java源文件的关键步骤。 #### 2. Java参数传递方式 Java中的参数传递遵循“按值传递”原则。这意味...

    手机游戏五子棋-J2ME

    在J2ME中,MIDlet是手机应用程序的基本单元,类似于Java SE中的Application或Applet。一个MIDlet通常由一个主类和若干辅助类组成,负责应用程序的生命周期管理。在"手机游戏五子棋"中,MIDlet类可能是整个游戏的入口...

    WEB截屏控件,网页截屏控件

    在描述中提到的“控件截屏返回bease64图片数据”,指的是截取的图片数据以Base64编码形式进行传输。 Base64是一种用于将二进制数据转换为ASCII字符串的编码方式,以便在不支持二进制传输的环境中(如电子邮件)发送...

    HTML5从入门到精通

    - HTML5 Canvas:Canvas提供了在网页中绘制图形的能力,这部分内容会介绍Canvas的API和使用方法。 - HTML5 Web存储:Web Storage和Web SQL数据库为网页应用提供了数据存储的能力,这部分会讲述如何使用这些存储...

    HTML5前端面试题(含答案)[归类].pdf

    前者用于持久化存储,数据不会因为浏览器关闭而丢失,适合保存长期数据;后者仅限于当前会话,当浏览器窗口关闭,存储的数据也会被删除,适用于临时性的会话数据存储。 6. **HTML5新增的表单元素**: HTML5扩展了...

Global site tag (gtag.js) - Google Analytics