package catchcolor;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.image.Image;
import java.io.File;
import static javafx.application.Application.launch;
import javafx.scene.image.ImageView;
import javafx.scene.Group;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.input.MouseEvent;
public class pro extends Application {
GraphicsContext gc;
int w=1300;
int h=700;
int[][] memor=new int[h][w];
int[][] memog=new int[h][w];
int[][] memob=new int[h][w];
int number;
int[] x=new int[10];
int[] y=new int[10];
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
number=0;
catchimg sub=new catchimg();
sub.makedata("2.jpg");
memor=sub.memor;
memog=sub.memog;
memob=sub.memob;
Canvas canvas = new Canvas(1300,700);
gc = canvas.getGraphicsContext2D();
canvas.setLayoutX(50);
canvas.setLayoutY(0);
int mx,nx;
for(mx=0;mx<h;mx++){
for(nx=0;nx<w;nx++){
Color col = Color.rgb(memor[mx][nx],memog[mx][nx], memob[mx][nx]);
gc.setFill(col);
gc.fillRect(nx,mx,1,1);
}
}
canvas.addEventHandler(MouseEvent.MOUSE_CLICKED,
new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
int x1,y1;
x1=(int)e.getX();
y1=(int)e.getY();
gc.setFill(Color.RED);
gc.fillRect(x1,y1,5,5);
number=number+1;
x[number]=x1;
y[number]=y1;
System.out.println(number);
}
});
Button btn = new Button();
btn.setText("決定");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
graph sub2=new graph();
sub2.memor=memor;
sub2.memog=memog;
sub2.memob=memob;
sub2.x=x;
sub2.y=y;
sub2.makedata();
}
});
btn.setLayoutX(10);
btn.setLayoutY(100);
Group root = new Group();
Scene scene = new Scene(root, 1500, 700);
root.getChildren().add(btn);
root.getChildren().add(canvas);
primaryStage.setTitle("画像処理");
primaryStage.setScene(scene);
primaryStage.show();
}
}
package catchcolor;
import java.awt.*;
import java.awt.Color;
import java.awt.image.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.Polygon;
public class graph{
int w=1300;
int h=700;
int[][] memor=new int[h][w];
int[][] memog=new int[h][w];
int[][] memob=new int[h][w];
int[] x=new int[10];
int[] y=new int[10];
void makedata(){
int x1=x[1];
int y1=y[1];
int x2=x[2];
int y2=y[2];
BufferedImage off = new BufferedImage(x2-x1+2, y2-y1+2, BufferedImage.TYPE_INT_BGR);
Graphics offsc = off.getGraphics();
int mx,nx;
for(mx=y1;mx<y2+1;mx++){
for(nx=x1;nx<x2+1;nx++){
offsc.setColor(new Color(memor[mx][nx],memog[mx][nx],memob[mx][nx]));
offsc.fillRect(nx-x1,mx-y1,1,1);
}}
String file="e.jpg";
offsc.dispose();
try {
ImageIO.write(off, "jpeg", new File(file));
} catch (IOException exception) { exception.printStackTrace(); }
}
}
package catchcolor;
import java.awt.*;
import java.awt.image.*;
import java.net.URL;
import java.net.MalformedURLException;
public class catchimg {
PixelGrabber pg;
Color col;
Image img;
int red,green,blue;
int mx,nx,m,n;
int ex,ey;
String s1,s2,s3,s4;
URL urlx;
int w=1300;
int h=700;
int[] pix=new int[h*w];
int[][] memor=new int[h][w];
int[][] memog=new int[h][w];
int[][] memob=new int[h][w];
void makedata(String pic){
catchimg(pic);
}
void catchimg(String s){
img = Toolkit.getDefaultToolkit().getImage(s);
pg = new PixelGrabber(img,0,0,w,h,pix,0,w);
try{pg.grabPixels();}catch(InterruptedException ie){}
m=0;
n=0;
for(int i=0;i<w*h;i++){
int p = pix[i];
col=new Color(pix[i]);
red=col.getRed();
green=col.getGreen();
blue=col.getBlue();
memor[m][n]=red;
memog[m][n]=green;
memob[m][n]=blue;
n=n+1;
if (n==w)m=m+1;
if (n==w)n=0;
}
}
}
最終更新:2016年03月05日 04:56