惭愧、惭愧!此程序是我从JAVA中文站(java-cn.net)上看到的,并非原创。刚好你要,刚好我又
有,就粘上来给你吧!**********************************************************************************
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
class ImageCanvas extends Canvas{
private Image image;
private Dimension prefSize;
public ImageCanvas(Image image){
this.image = image;
calculatePreferredSize();
}
public void setImage(Image image){
this.image = image;
calculatePreferredSize();
repaint();
}
private void calculatePreferredSize(){
prefSize = new Dimension(image.getWidth(this),image.getHeight(this));
System.out.println(image.getWidth(this));
setSize(prefSize);
}
public Dimension getPreferredSize() {
return prefSize;
}
public Dimension getMinimumSize() {
return prefSize;
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
g.drawImage(image,0,0,null);
}
}
class ImageUtils{
public static Image getScreenImage(){
Robot robot;
try {
robot = new Robot();
}catch(Exception e) {
throw new RuntimeException("unable to construct Robot");
}
Dimension screenDims =Toolkit.getDefaultToolkit().getScreenSize();
Image screen =robot.createScreenCapture(new Rectangle(450,350,screenDims.width,screenDims.height)).getScaledInstance(400,300,Image.SCALE_SMOOTH);
MediaTracker tracker =new MediaTracker(new Label());
tracker.addImage(screen,1);
try {
tracker.waitForID(0);
}catch(InterruptedException e) { /** ... */ }
return screen;
}
}
public class ScreenCapture extends Frame{
private ImageCanvas canvas =new ImageCanvas(ImageUtils.getScreenImage());
public ScreenCapture(){
add(canvas);
setSize(400,300);
setVisible(true);
Thread imageThread =new UpdateThread();
imageThread.setDaemon(true);
imageThread.start();
}
class UpdateThread extends Thread{
public void run(){
while(true){
try {
Thread.currentThread().sleep(1000);
}
catch (Exception ex) {
}
canvas.setImage(ImageUtils.getScreenImage());
validate();
}
}
}
public static void main(String[] args){
new ScreenCapture();
}
}
**********************************************************************************
有,就粘上来给你吧!**********************************************************************************
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
class ImageCanvas extends Canvas{
private Image image;
private Dimension prefSize;
public ImageCanvas(Image image){
this.image = image;
calculatePreferredSize();
}
public void setImage(Image image){
this.image = image;
calculatePreferredSize();
repaint();
}
private void calculatePreferredSize(){
prefSize = new Dimension(image.getWidth(this),image.getHeight(this));
System.out.println(image.getWidth(this));
setSize(prefSize);
}
public Dimension getPreferredSize() {
return prefSize;
}
public Dimension getMinimumSize() {
return prefSize;
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
g.drawImage(image,0,0,null);
}
}
class ImageUtils{
public static Image getScreenImage(){
Robot robot;
try {
robot = new Robot();
}catch(Exception e) {
throw new RuntimeException("unable to construct Robot");
}
Dimension screenDims =Toolkit.getDefaultToolkit().getScreenSize();
Image screen =robot.createScreenCapture(new Rectangle(450,350,screenDims.width,screenDims.height)).getScaledInstance(400,300,Image.SCALE_SMOOTH);
MediaTracker tracker =new MediaTracker(new Label());
tracker.addImage(screen,1);
try {
tracker.waitForID(0);
}catch(InterruptedException e) { /** ... */ }
return screen;
}
}
public class ScreenCapture extends Frame{
private ImageCanvas canvas =new ImageCanvas(ImageUtils.getScreenImage());
public ScreenCapture(){
add(canvas);
setSize(400,300);
setVisible(true);
Thread imageThread =new UpdateThread();
imageThread.setDaemon(true);
imageThread.start();
}
class UpdateThread extends Thread{
public void run(){
while(true){
try {
Thread.currentThread().sleep(1000);
}
catch (Exception ex) {
}
canvas.setImage(ImageUtils.getScreenImage());
validate();
}
}
}
public static void main(String[] args){
new ScreenCapture();
}
}
**********************************************************************************
解决方案 »
- 关于排序的问题,急解决!!
- 请教关于异常的处理,红色处是在下不理解之处,望各位详细指教
- session详解
- 为什么session无法进行判断,请高手指教
- import javax.servlet.http.HttpServletRequest;这个包在那里啊?
- 急,求助!关于JNI调用dll导致JVM崩溃的问题
- java 如何调用oracle的存储过程?在线等!!!!
- 帮忙看看这是用什莫开发工具的包?
- 还有一个困绕了很久很菜的问题,在IE6.0下为什么无法看到我编的APPLET(只有一块灰色的区域)
- List集合中有一百万条数据,按照每半小时时间段进行分组
- 如何在java中引用其他公司的PLAF,比如alloy的PLAF?
- 有关JasperReports的几个问题,谢谢帮助
http://expert.csdn.net/Expert/topic/1927/1927244.xml?temp=.48444772.存储(已经具体压缩的能力)
public class ImageTest { public ImageTest() {
}
public static void main(String[] args) throws Exception{
ImageTest imageTest1 = new ImageTest();
File file=new File("Screen.jpg");
java.awt.Robot robot=new java.awt.Robot();
BufferedImage buffer=robot.createScreenCapture(new Rectangle(0,0,800,600)) ;
System.out.println("create ObjectOutputStream is ok!");
//-------------------测试
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(file)); ImageIO.write(buffer,"JPEG",bos);
ImageIO.createImageOutputStream(bos);
}
}
3.压缩
216.Screen Shot 屏幕抓图 import java.util.*;
import java.io.*;
import java.awt.Robot;
import java.awt.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;public class ScreenShot { public ScreenShot() {
}
public static void main(String[] args) throws Exception{
BufferedImage screenshot = (new Robot()).createScreenCapture(new Rectangle(0,0,800,600)) ;
//以上rectangle(0,0,800,600)中,你可以用Toolkit取得当前屏幕大小。
OutputStream out = new BufferedOutputStream(new FileOutputStream ("ScreenShot.jpg")) ;
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out) ;
encoder.encode(screenshot) ;
out.close() ;
}
}