gazou

package imp2;
 
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import javafx.scene.Group;
import javafx.scene.shape.*;
import static javafx.application.Application.launch;
import javafx.scene.paint.Color;
 import javafx.scene.input.MouseEvent;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.canvas.Canvas;
import javafx.scene.image.PixelReader;
 import javafx.scene.canvas.GraphicsContext;
 
public class pro extends Application {
 
Canvas cam;
GraphicsContext gc;
 
int[][] mr=new int[500][500];
int[][] mg=new int[500][500];
int[][] mb=new int[500][500];
int[][] rgb=new int[500][500];
int[][] df=new int[500][500];
int[] count=new int[500];
 
int px,py;
 
public static void main(String[] args) {
launch(args);
}
 
 
@Override
public void start(Stage primaryStage) {
 
 px=0;
 py=0;
 
Image im = new Image("file:pic/d.jpg");
 
ImageView imageView = new ImageView();
imageView.setImage(im);
 
 
PixelReader reader = im.getPixelReader();
 
int mx,nx;
 
for(mx=0;mx<500;mx++){
for(nx=0;nx<500;nx++){
Color col = reader.getColor(nx, mx);
mr[mx][nx] =(int)(255*col.getRed());
mg[mx][nx] = (int)(255*col.getGreen());
mb[mx][nx] = (int)(255*col.getBlue());
}
}
 
 
for(mx=0;mx<500;mx++){
for(nx=0;nx<500;nx++){ 
rgb[mx][nx]=rgb(mx,nx);
}
}
 
double r1,x1,y1;
 
for(mx=1;mx<500;mx++){
for(nx=1;nx<500;nx++){ 
r1=(rgb[mx][nx]-rgb[mx][nx-1])*(rgb[mx][nx]-rgb[mx][nx-1]);
r1=r1+(rgb[mx][nx]-rgb[mx-1][nx])*(rgb[mx][nx]-rgb[mx-1][nx]);
df[mx][nx]=(int)Math.sqrt(r1);
}
}
 
 
int tx;
 
for(mx=0;mx<500;mx++){
for(nx=0;nx<500;nx++){
tx=df[mx][nx];
count[tx]=count[tx]+1;
}
}    
 
int p1;
 
p1=point(0.95);
 
 
cam = new Canvas(500,500);
gc = cam.getGraphicsContext2D();
 
 
for(mx=0;mx<500;mx++){
for(nx=0;nx<500;nx++){
Color c = Color.rgb(0,0,0); 
gc.setFill(c);
if(df[mx][nx]>p1)gc.fillRect(nx,mx,1,1);
}
}
 
 
 
cam.addEventHandler(MouseEvent.MOUSE_CLICKED, 
       new EventHandler<MouseEvent>() {
           @Override
           public void handle(MouseEvent e) {
 
 
 px=(int)e.getX();
 py=(int)e.getY();
Color c2 = Color.rgb(mr[py][px],mg[py][px],mb[py][px]); 
 
gc.setFill(c2);
gc.fillRect(px,py,30,30);
 
 
 
 
}
});
 
Group root = new Group();
Scene scene = new Scene(root, 700, 700); 
 
root.getChildren().add(cam);
primaryStage.setTitle("グラフ");
primaryStage.setScene(scene);
primaryStage.show();
 
}
 int rgb(int mx,int nx){
 int r1,g1,b1,rg;
 
r1=mr[mx][nx];   
g1=mg[mx][nx];  
b1=mb[mx][nx];  
rg=(int)(0.6*r1+0.3*g1+0.1*b1);
return rg;
}
 
  int point(double p1){
  int s,c1,c2;
  c1=0;
  c2=(int)(p1*500*500);
  int p2;
  p2=0;
  for(s=0;s<100;s++){    
  c1=c1+count[s];
  if(c1<c2)p2=s;
  }
  return p2;
  }
 
 
 
}
最終更新:2014年04月26日 03:28
添付ファイル