Hello. I am new to coding.
I’m trying to repeat schultzschultzgrafik https://www.instagram.com/p/CD4h9QCirXH/
That’s what I did.
PImage img;
float xStep, yStep;
int xCount = 100;
int yCount = 100;
int m = 10, s = 5, px, py;
float startX, startY;
PImage selection;
int direction = 1;
float signal;
void setup() {
size(800, 800);
img = loadImage("1.jpg");
img.resize(800, 800);
}
void draw(){
background(img);
fill(#ffffff);
noStroke();
ellipse(mouseX, mouseY, 10, 10);
if(mousePressed) {
noFill();
strokeWeight(3);
stroke(255, 100);
rectMode(CORNER);
rect(startX, startY, mouseX-startX, mouseY-startY);
}
}
void mousePressed() {
startX=mouseX;
startY=mouseY;
}
void mouseReleased() {
if(mouseButton==RIGHT && selection!=null) {
set(mouseX, mouseY, selection);
img=get();
}
else selection=get((int)startX, (int)startY, (int)(abs(startX-mouseX)), (int)(abs(startY-mouseY)));
if (signal > img.height/2 || signal < 0) {
direction = direction / -1;
}
if (mousePressed == true) {
signal = abs(mouseY % img.height);
}
else {
signal += (0.3*direction);
}
if (keyPressed == true) {
set(0, 0, img);
// SOURCE
int sx = px;
int sy = py;
int sw = int(startX*2);
int sh = int(startY*2);
// DESTINATION
int dx = px;
int dy = py;
int dw = int(mouseX);
int dh = int(mouseY);
copy(img, sx, sy, sw, sh, dx, dy, dw, dh);
}
}
Tell me how to copy the selected area
1 Like
your wish is my command !
you will probably want to use a PGraphics, since “normal” copy copies into the display window.
then you can put the PGraphics to wherever you like (e.g. move it with the mouse.
PImage img;
PGraphics one;
void setup() {
size(400,600);
img = loadImage("woman.png");
one = createGraphics(width, height);
}
void draw() {
one.beginDraw();
one.copy(img,100,50,100,100,100,50,100,100);
one.endDraw();
image(one,0,0);
}
1 Like
And now almost six months have passed, but I still haven’t figured it out. Can you give me another one hint?
PImage img;
PGraphics one;
boolean sun = false;
int size = 50;
float startX, startY;
void setup() {
size(700,700);
img = loadImage("123.jpg");
one = createGraphics(width, height);
}
void draw() {
//background(img);
image(img,0,0);
// SOURCE
int sx = mouseX; //
int sy = mouseY;
int sw = mouseX - mouseX;
int sh = mouseY - mouseY;
// DESTINATION
int dx = mouseX ;
int dy = mouseY ;
int dw = mouseX - mouseX;
int dh = mouseY - mouseY;
one.beginDraw();
one.copy(img, sx, sy, sw, sh, dx, dy, dw, dh);
one.endDraw();
image(one,0,0);
one.beginDraw();
if (mousePressed) {
one.set(0, 0, img);
one.noFill();
one.stroke(#ff0000);
one.strokeWeight(1);
one.rect(startX,startY,mouseX - startX,mouseY -startY );
one.endDraw();
}
}
void mousePressed() {
sun = true;
startX=mouseX;
startY=mouseY;
}
I think you need to look at the video more carefully
See there is a red box when he is selecting an
area
So I suppose click mouse, hold mouse make red rectangle, release button to define source area
Click again, draw area
Reflect this in your code please
glv
August 29, 2021, 11:42am
6
Hello,
Here is an example without the mouse to get you started:
PImage img1, img2;
PGraphics pg1;
//Runs once
void setup()
{
size(640, 400);
img1 = loadImage("https://github.com/processing/processing-docs/blob/master/content/examples/Basics/Image/Pointillism/data/moonwalk.jpg?raw=true");
img2 = createImage(0, 0, RGB);
pg1 = createGraphics(width, height);
pg1.beginDraw();
pg1.image(img1, 0, 0);
pg1.endDraw();
}
// Loops at 60 fps (frames per second)
void draw()
{
background(255, 0, 0);
image(pg1,0,0);
img2 = img1.get(200, 200, 40, 40);
pg1.beginDraw();
//img2 = img1.get(200, 200, 40, 40);
pg1.image(img2, 400, 360);
img2 = img1.get(300, 300, 40, 40);
//img2 = img1.get(300, 300, 40, 40).copy();
pg1.image(img2, 200, 360);
pg1.endDraw();
}
You can integrate the mouse control and rectangles in the sketch window to overlay on the PGraphic.
I removed the loop that drew the diagonal images.
All the related tutorials, references and examples are here:
I used PImage.get():
:)
2 Likes