请教一个网页截图的问题

lena_fox 2008-11-11 09:05:14
请问java能不能对网站的页面进行截图?类似QQ的截图功能,客户端能截取自己正看到的网页并保存。 找了好多地方也没有找到过相关资料~~ 请教各位达人`
...全文
290 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lena_fox 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 bluefcxt 的回复:]
楼主你看看这个例子可以应用么


Java code
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

/**
* 用Java模拟出QQ桌面截图功能
* @author 五斗米 <如转载请保留作者和出处>
* @blog http://blog.csdn.net/mq612
*/…
[/Quote]


能截图但是不好应用到客户端截图。用applet又过于落伍。先暂时结帖了。谢谢各位。
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 tiyuzhongxin789 的回复:]
使用java来对网页截图是不可能的,
你不可以使用键盘的PrintScreen后,
在PhotoShop中处理不就可以了,
然后再用java调用来在网页上显示
[/Quote]
兄弟来,不能当小偷啊,注明一下引用啊!
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yinyuan1987 的回复:]
使用java来对网页截图是不可能的,
你不可以使用键盘的PrintScreen后,
在PhotoShop中处理不就可以了,
然后再用java调用来在网页上显示
[/Quote]
是啊!
1楼我就说了
用java来对网页截图不可能,
一洽客服系统 2008-11-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lijia0087 的回复:]
能用么?
关注中
[/Quote]
Swing做到截图并不难 楼主得意思好像是在说在web得客户端截图 好像深了点 期待楼主突破后回帖:(
tiyuzhongxin789 2008-11-13
  • 打赏
  • 举报
回复
使用java来对网页截图是不可能的,
你不可以使用键盘的PrintScreen后,
在PhotoShop中处理不就可以了,
然后再用java调用来在网页上显示
lijia0087 2008-11-13
  • 打赏
  • 举报
回复
能用么?
关注中
bluefcxt 2008-11-13
  • 打赏
  • 举报
回复
楼主你看看这个例子可以应用么


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

/**
* 用Java模拟出QQ桌面截图功能
* @author 五斗米 <如转载请保留作者和出处>
* @blog http://blog.csdn.net/mq612
*/

public class Test extends JFrame {

private static final long serialVersionUID = -267804510087895906L;

private JButton button = null;

private JLabel imgLabel = null;

public Test() {
button = new JButton("模拟屏幕(点右键退出)");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
new ScreenWindow(imgLabel);
} catch (Exception e1) {
JOptionPane.showConfirmDialog(null, "出现意外错误!", "系统提示", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);
}
}
});
JPanel pane = new JPanel();
pane.setBackground(Color.WHITE);
imgLabel = new JLabel();
pane.add(imgLabel);
JScrollPane spane = new JScrollPane(pane);
this.getContentPane().add(button, BorderLayout.NORTH);
this.getContentPane().add(spane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.setLocationRelativeTo(null);
this.setVisible(true);
}

public static void main(String[] args) {
new Test();
}
}

class ScreenWindow extends JFrame {

private static final long serialVersionUID = -3758062802950480258L;

private boolean isDrag = false;

private int x = 0;

private int y = 0;

private int xEnd = 0;

private int yEnd = 0;

public ScreenWindow(final JLabel imgLabel) throws AWTException, InterruptedException {
Dimension screenDims = Toolkit.getDefaultToolkit().getScreenSize();
JLabel label = new JLabel(new ImageIcon(ScreenImage.getScreenImage(0, 0, screenDims.width, screenDims.height)));
label.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
label.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
dispose();
}
}

public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
}

public void mouseReleased(MouseEvent e) {
if (isDrag) {
xEnd = e.getX();
yEnd = e.getY();
if(x > xEnd){
int temp = x;
x = xEnd;
xEnd = temp;
}
if(y > yEnd){
int temp = y;
y = yEnd;
yEnd = temp;
}
try {
imgLabel.setIcon(new ImageIcon(ScreenImage.getScreenImage(x, y, xEnd - x, yEnd - y)));
} catch (Exception ex) {
JOptionPane.showConfirmDialog(null, "出现意外错误!", "系统提示", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);
}
dispose();
}
}
});
label.addMouseMotionListener(new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
if(!isDrag)
isDrag = true;
}

public void mouseMoved(MouseEvent e) {
/** 拖动过程的虚线选取框需自己实现 */
}
});
this.setUndecorated(true);
this.getContentPane().add(label);
this.setSize(screenDims.width, screenDims.height);
this.setVisible(true);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
}

class ScreenImage {

public static Image getScreenImage(int x, int y, int w, int h) throws AWTException, InterruptedException {
Robot robot = new Robot();
Image screen = robot.createScreenCapture(new Rectangle(x, y, w, h)).getScaledInstance(w, h, Image.SCALE_SMOOTH);
MediaTracker tracker = new MediaTracker(new Label());
tracker.addImage(screen, 1);
tracker.waitForID(0);
return screen;
}
}

lena_fox 2008-11-13
  • 打赏
  • 举报
回复
明天还没有答案就结帖了
lena_fox 2008-11-12
  • 打赏
  • 举报
回复
自己顶一下
lena_fox 2008-11-12
  • 打赏
  • 举报
回复
在此先特别感谢下yinyuan1987
当然也谢谢所有关注的人。
lena_fox 2008-11-12
  • 打赏
  • 举报
回复
我们项目面向的用户是不具备很好的计算机使用知识的。所以我们期望的效果是点击截图后能直接选择截取区域,并在截取完成后直接提示用户选择保存路径和文件名。流程要做到和下载文件一样简洁。
ruoye_2008 2008-11-12
  • 打赏
  • 举报
回复
4楼说得对,用JAVA截网页的,应该没有这种方法,但你可以按键盘上的print Screen SysRq键截取啊。当然一些截图的软件,蛮多,你网上可以找找;
如果截取图片的,CSDN确实有一个,不过不知是用什么语言做的,你可以找找相关资料。
  • 打赏
  • 举报
回复
帮兄弟顶一下!
关注ing!
microns 2008-11-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yinyuan1987 的回复:]
兄弟,帮你顶顶!
别沉下去
[/Quote]
那我也帮顶了
lena_fox 2008-11-11
  • 打赏
  • 举报
回复
可能比较好的思路是 js + activeX控件。
  • 打赏
  • 举报
回复
csdn也有这样的截图效果,你上传头像时,会让你选择你要截取的选择域,
但是它是针对图片的,你是直接对网页截图。
liguangwen86 2008-11-11
  • 打赏
  • 举报
回复
帮顶一下!
lena_fox 2008-11-11
  • 打赏
  • 举报
回复
如果要这样就简单了。用js模拟下PrintScreen键后再去粘帖保存下图片即可。
问题是我认为这样做过于复杂了,我希望达到的效果是:在页面上点击一个按钮然后出来一个选择截取范围的选择域,像QQ截图那样。在选取完范围后就可以直接让我选择图片保存路径和文件名之类的了。
  • 打赏
  • 举报
回复
兄弟,帮你顶顶!
别沉下去
  • 打赏
  • 举报
回复
使用java来对网页截图是不可能的,
你不可以使用键盘的PrintScreen后,
在PhotoShop中处理不就可以了,
然后再用java调用来在网页上显示
加载更多回复(1)

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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