OI gente alguem poderia me dizer pq esse redimensionador aki não está funcionando neste metodo de capturar tela:
import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ScreenShot2 extends java.applet.Applet implements Runnable {
Thread capturador;
static BufferedImage imagem0 ;
// o start da applet
public void start() {
capturador = new Thread(this);
capturador.start();//começa a correr a thread esse start eh do thread
}
// Reziser da imagem, os doubles fazem os calculos, o affine serve para fazer o calculo da escala e devolve a imagem como result
//metodo para atualização
public void atualiza(String arquivo){
//tempo de espera
String tempo = "0";//em milissegundo vezes um long mil abaixo para se tornarem segundos
try {
long time = Long.parseLong(tempo) * 1000L;
System.out.println("Waiting " + (time / 1000L) +
" second(s)...");
Thread.sleep(time);
} catch(NumberFormatException nfe) {
System.err.println(tempo + " does not seem to be a " +
"valid number of seconds.");
System.exit(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
Rectangle screenRect = new Rectangle(screenSize);
// criar screenshot
Robot robot = null;
try {
robot = new Robot();
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
BufferedImage imgcapturada=robot.createScreenCapture(screenRect);
[b] imagem0 = ScreenShot2.resize(imgcapturada,800,600); [/b]
try {
ImageIO.write(imagem0, "jpg", new File(arquivo));//mudar extensão aki se possivel
System.out.println("Arquivo gerado : "+arquivo);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run() {for(int i = 0; i < 15; i++){//metodos da thread começados no start
new ScreenShot().atualiza("c:/testea"+i+".gif");
if (i>=14) {i=0;}}//Pra zerar td isso e recontinuar o loop
}
public static BufferedImage resize(BufferedImage imagem, int newWidth, int newHeight) {
BufferedImage results = new BufferedImage(newWidth, newHeight,BufferedImage.TYPE_INT_RGB);//mexer aki na color model
Graphics2D g = results.createGraphics();
double scaleX = newWidth / (double) imagem.getWidth();
double scaleY = newHeight / (double) imagem.getHeight();
AffineTransform xform = AffineTransform.getScaleInstance(scaleX, scaleY);
g.drawRenderedImage(imagem, xform);
g.dispose();
return results;
}
}
mas funciona neste programa de imagens d webcam?
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.AffineTransform;
import java.awt.image.*;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
public class Webcam extends java.applet.Applet implements Runnable {
Thread webcam;
int delay;
public void start() {
webcam = new Thread(this);
webcam.start();//começa a correr a thread esse start eh do thread
}
public void run() {
new Webcamshooter();
}
class Webcamshooter extends Frame {
private BufferedImage image1;
private FrameGrabber2 vision1;
private int threshold = 200;
private BufferedImage image2;
public Webcamshooter() {
//tempo de espera
String tempo = "0";//em milissegundo vezes um long mil abaixo para se tornarem segundos
try {
long time = Long.parseLong(tempo) * 1000L;
// System.out.println("Waiting " + (time / 1000L) +
// " second(s)...");
Thread.sleep(time);
} catch(NumberFormatException nfe) {
// System.err.println(tempo + " does not seem to be a " +
// "valid number of seconds.");
System.exit(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
vision1 = new FrameGrabber2();
vision1.start();
}
catch(FrameGrabberException fge) {
System.out.println(fge.getMessage());
}
[/code]
[b]image1= Webcam.resize(vision1.getBufferedImage(),300,225);//mudar parametros da imagem aki
image2= Webcam.resize(vision1.getBufferedImage(),520,368);[/b][i]//SENDO QUE ESSE METODO getBufferedImage pega a buffered capturada pela cam[/i]
[code]for(int i = 0; i < 22; i++){
salva("c:/webcamimgI"+i+".gif",image1);
salva("c:/webcamimgII"+i+".gif",image2);
if (i>=21) {i=0;}
}
}
private void salva(String arquivo,BufferedImage img) {
try {
ImageIO.write(img, "jpg", new File(arquivo));
System.out.println("Arquivo gerado : "+arquivo);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//Reziser da imagem, os doubles fazem os calculos, o affine serve para fazer o calculo da escala e devolve a imagem como result
public static BufferedImage resize(BufferedImage image, int newWidth, int newHeight) {
BufferedImage result = new BufferedImage(newWidth, newHeight,BufferedImage.TYPE_INT_RGB);//mexer aki na color model
Graphics2D g = result.createGraphics();
double scaleX = newWidth / (double) image.getWidth();
double scaleY = newHeight / (double) image.getHeight();
AffineTransform xform = AffineTransform.getScaleInstance(scaleX, scaleY);
g.drawRenderedImage(image, xform);
g.dispose();
return result;
}
}