applet+数字签名在网页上粘贴图片

rexuenaner929 2008-09-11 01:47:25
最近在网上看到有人说applet+数字签名可以让用户拷屏后直接将图片粘贴在网页上,请问这个如何实现
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
linpyi 2008-09-16
  • 打赏
  • 举报
回复
google,java抓图

网上找的代码,
改改应该会有帮助

package com.linpyi.util;

import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;

/**
* @Author Qiu_BaiChao 一个简单的屏幕抓图
*
*/

public class ScreenCapture {
// test main
public static void main(String[] args) throws Exception {
String userdir = System.getProperty("user.dir");
File tempFile = new File("d:", "temp.png");
ScreenCapture capture = ScreenCapture.getInstance();
capture.captureImage();
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JLabel imagebox = new JLabel();
panel.add(BorderLayout.CENTER, imagebox);
imagebox.setIcon(capture.getPickedIcon());
capture.saveToFile(tempFile);
capture.captureImage();
imagebox.setIcon(capture.getPickedIcon());
frame.setContentPane(panel);
frame.setSize(400, 300);
frame.show();
System.out.println("Over");
}

private ScreenCapture() {

try {
robot = new Robot();
} catch (AWTException e) {
System.err.println("Internal Error: " + e);
e.printStackTrace();
}
JPanel cp = (JPanel) dialog.getContentPane();
cp.setLayout(new BorderLayout());
labFullScreenImage.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent evn) {
isFirstPoint = true;
pickedImage = fullScreenImage.getSubimage(recX, recY, recW,
recH);
dialog.setVisible(false);
}
});

labFullScreenImage.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent evn) {
if (isFirstPoint) {
x1 = evn.getX();
y1 = evn.getY();
isFirstPoint = false;
} else {
x2 = evn.getX();
y2 = evn.getY();
int maxX = Math.max(x1, x2);
int maxY = Math.max(y1, y2);
int minX = Math.min(x1, x2);
int minY = Math.min(y1, y2);
recX = minX;
recY = minY;
recW = maxX - minX;
recH = maxY - minY;
labFullScreenImage.drawRectangle(recX, recY, recW, recH);
}
}

public void mouseMoved(MouseEvent e) {
labFullScreenImage.drawCross(e.getX(), e.getY());
}
});

cp.add(BorderLayout.CENTER, labFullScreenImage);
dialog.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
dialog.setAlwaysOnTop(true);
dialog.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
dialog.setUndecorated(true);
dialog.setSize(dialog.getMaximumSize());
dialog.setModal(true);
}

// Singleton Pattern
public static ScreenCapture getInstance() {
return defaultCapturer;
}

/** 捕捉全屏慕 */
public Icon captureFullScreen() {
fullScreenImage = robot.createScreenCapture(new Rectangle(Toolkit
.getDefaultToolkit().getScreenSize()));
ImageIcon icon = new ImageIcon(fullScreenImage);
return icon;
}

/**
* 捕捉屏幕的一个矫形区域
*/
public void captureImage() {
fullScreenImage = robot.createScreenCapture(new Rectangle(Toolkit
.getDefaultToolkit().getScreenSize()));
ImageIcon icon = new ImageIcon(fullScreenImage);
labFullScreenImage.setIcon(icon);
dialog.setVisible(true);
}

/** 得到捕捉后的BufferedImage */
public BufferedImage getPickedImage() {
return pickedImage;
}

/** 得到捕捉后的Icon */
public ImageIcon getPickedIcon() {
return new ImageIcon(getPickedImage());
}

/**
* 储存为一个文件,为PNG格式
*
* @deprecated replaced by saveAsPNG(File file)
*/
@Deprecated
public void saveToFile(File file) throws IOException {
ImageIO.write(getPickedImage(), defaultImageFormater, file);
}

/** 储存为一个文件,为PNG格式 */
public void saveAsPNG(File file) throws IOException {
ImageIO.write(getPickedImage(), "png", file);
}

/** 储存为一个JPEG格式图像文件 */
public void saveAsJPEG(File file) throws IOException {
ImageIO.write(getPickedImage(), "JPEG", file);
}

/** 写入一个OutputStream */
public void write(OutputStream out) throws IOException {
ImageIO.write(getPickedImage(), defaultImageFormater, out);
}

// singleton design pattern
private static ScreenCapture defaultCapturer = new ScreenCapture();
private int x1, y1, x2, y2;
private int recX, recY, recH, recW; // 截取的图像
private boolean isFirstPoint = true;
private BackgroundImage labFullScreenImage = new BackgroundImage();
private Robot robot;
private BufferedImage fullScreenImage;
private BufferedImage pickedImage;
private String defaultImageFormater = "png";
private JDialog dialog = new JDialog();
}

/** 显示图片的Label */
class BackgroundImage extends JLabel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(x, y, w, h);
String area = Integer.toString(w) + " * " + Integer.toString(h);
g.drawString(area, x + (int) w / 2 - 15, y + (int) h / 2);
g.drawLine(lineX, 0, lineX, getHeight());
g.drawLine(0, lineY, getWidth(), lineY);
}

public void drawRectangle(int x, int y, int width, int height) {
this.x = x;
this.y = y;
h = height;
w = width;
repaint();
}

public void drawCross(int x, int y) {
lineX = x;
lineY = y;
repaint();
}

int lineX, lineY;
int x, y, h, w;
}
rexuenaner929 2008-09-12
  • 打赏
  • 举报
回复
我觉得说的很清楚了啊,就是当用户拷屏后,拷屏的图片会复制到剪切板,然后把图片直接粘贴在web页面上,这就是要是实现的功能啊,这个还不清楚吗,如果在不清楚,我真不知道该怎么说了
linpyi 2008-09-12
  • 打赏
  • 举报
回复
那目的是什么,没有解释清楚,如果互换角色,我问你个问题,我确不知道你要实现什么样的功能,如何回答你,可能有很多人都有这样的疑惑
me old 2008-09-12
  • 打赏
  • 举报
回复
有这种效果吗,第一次听说.
rexuenaner929 2008-09-11
  • 打赏
  • 举报
回复
我只想知道技术是怎么实现的,只要能粘贴在网页上就可以,至于站在网页上干什么就不用说了吧
linpyi 2008-09-11
  • 打赏
  • 举报
回复
能不能说的清楚点,

粘贴在网页上干吗
java编程100实例,适合初学java的朋友学习,含有源代码,省去了码代码的时间,可以直接导入,运行。建议实用eclipse,内容如下: 实例1 产生自己的控件 实例2 控件的排布示例 实例3 控件的相互控制与消息传递 实例4 彩色列表框 实例5 圆形的按钮 实例6 密码验证框 实例7 虚线与实线 实例8 显示多种字体 实例9 多种风格的窗口 实例10右键弹出菜单 实例11 森林状的关系图 实例12 简单的文本编辑器 实例13使用剪贴板的复制粘贴程序 实例14 文本的拖动处理 实例15 图片的拖动处理 实例16 数字时钟 实例17 简单的表单程序 实例18动画图标 实例19 滑杆演示 实例20程序启动界面 实例21 调色板 实例22 文件选择器 实例23 自定义光标 实例24 HTML浏览器 实例25抖动文字 实例26 阴影文字 实例27 3D文字 实例28 波浪文字 实例29 飞行文字 实例30 伸展文字 实例31 用Applet显示图片 实例32 图片火焰效果 实例33 图片百叶窗 实例34 图片倒影 实例35 图片翻折 实例36 闹钟 实例37 万年历 实例38 计算器 实例39 电子相册 实例40 声音播放程序 实例41 视频播放程序 实例42 半透明图片 实例43 图片旋转 实例44缩小与放大 实例45 移动的遮照效果 实例46 模糊与锐化 实例47 常用图形的绘制与填充 实例48 不规则图形的绘制 实例49 列出目录下的文件 实例50 取得目录文件信息 实例51 目录和文件的创建、删除和更名 实例52 复制文件 实例53 用GZIP压缩解压文件 实例54 用Zip压缩多个文件 实例55 从压缩包中提取文件 实例56 zip压缩包查看程序 实例57 压缩中文文件名的文件 实例58 存储与读取对象 实例59 Java画图程序 实例60 从网络取得图像 实例61 从网络取得文件 实例62 TCP服务器端 实例63 TCP客户端 实例64 UDP服务器模型 实例65 UDP客户端模型 实例66 聊天室服务器 实例67 聊天室客户端 实例68 组播组中发送和接受数据 实例69 时间日期服务器 实例70 FTP连接与浏览 实例71 HTTP连接与浏览 实例72 数据压缩与传输 实例73 Telnet客户端 实例74 创建和配置数据源 实例75 建立与断开数据库的连接 实例76 查询数据库 实例77 使用表格显示查询结果 实例78 修改数据库 实例79 创建与删除数据库中的表 实例80 Servlet中连接数据库 实例81 留言板程序 实例82 客户登录Servlet小程序 实例83 访问权限控制 实例84 产生密钥 实例85 对称加密 实例86 非对称加密 实例87 数字签名 实例88 数字证书 实例89SSL及HTTPS协议 实例90 Screen小程序 实例91 文字跑马灯与信息窗口 实例92 手机日历 实例93 手机画册 实例94Canvas绘图程序 实例95 碰撞的小球 实例96 用RMS记录个人信息 实例97 建立Http连接 实例98 从网络上下载数据 实例99定时器的使用 实例100 音乐播放

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧