Tool um rotierte Bildausschnitte aus Bildstapeln zu schneiden
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

bounder.pde 5.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. class Bounder {
  2. int state;
  3. float h;
  4. float angle, arcangle;
  5. float angle(PVector v1, PVector v2) {
  6. float a = atan2(v2.y, v2.x) - atan2(v1.y, v1.x);
  7. if (a < 0) a += TWO_PI;
  8. return a;
  9. }
  10. PVector p1, p2, p3, p4;
  11. void leftclick() {
  12. if (state < 3) state++;
  13. else state = 1;
  14. if (state == 1) {
  15. p1 = new PVector(mouseX, mouseY);
  16. loop();
  17. }
  18. if (state == 2) {
  19. p2 = new PVector(mouseX, mouseY);
  20. }
  21. if (state == 3) {
  22. h = -p2.dist(new PVector(mouseX, mouseY));
  23. noLoop();
  24. }
  25. }
  26. void rightclick(){
  27. reset();
  28. }
  29. void reset(){
  30. boolean redrawthis = (state == 3) ? true : false;
  31. state = 0;
  32. if(redrawthis) redraw();
  33. }
  34. void update() {
  35. if (state == 2) {
  36. h = -p2.dist(new PVector(mouseX, mouseY));
  37. }
  38. }
  39. void display() {
  40. if (state > 0) {
  41. fill(0);
  42. noStroke();
  43. circle(p1.x, p1.y, 5);
  44. }
  45. if (state == 1) {
  46. stroke(1);
  47. line(p1.x, p1.y, mouseX, mouseY);
  48. }
  49. if (state > 1) {
  50. fill(0);
  51. noStroke();
  52. circle(p2.x, p2.y, 5);
  53. fill(255, 100);
  54. stroke(1);
  55. pushMatrix();
  56. translate(p1.x, p1.y);
  57. rotate(angle(new PVector(0, width), PVector.sub(p2, p1)));
  58. rect(0, 0, h, p1.dist(p2));
  59. p3 = new PVector(screenX(h, 0), screenY(h, 0));
  60. p4 = new PVector(screenX(h, p1.dist(p2)), screenY(h, p1.dist(p2)));
  61. popMatrix();
  62. fill(0);
  63. noStroke();
  64. circle(p3.x, p3.y, 5);
  65. circle(p4.x, p4.y, 5);
  66. }
  67. }
  68. void compile(boolean Execute) {
  69. if (Execute) {
  70. state = 0;
  71. covers.add(new Cover(p1, p2, p4, p3));
  72. }
  73. PVector ptopmid = new PVector((p1.x + p2.x)/2, (p1.y + p2.y)/2);
  74. PVector pbotmid = new PVector((p3.x + p4.x)/2, (p3.y + p4.y)/2);
  75. /*
  76. links: p1 -> ptopmid -> pbotmid -> p3
  77. rechts: ptopmid -> p2 -> p4 -> pbotmid
  78. */
  79. int leftLeftTopX = (int)map(p1.x, 0, width, 0, images[imageNo].width);
  80. int leftLeftTopY = (int)map(p1.y, 0, height, 0, images[imageNo].height);
  81. int leftRightTopX = (int)map(ptopmid.x, 0, width, 0, images[imageNo].width);
  82. int leftRightTopY = (int)map(ptopmid.y, 0, height, 0, images[imageNo].height);
  83. int leftRightBotX = (int)map(pbotmid.x, 0, width, 0, images[imageNo].width);
  84. int leftRightBotY = (int)map(pbotmid.y, 0, height, 0, images[imageNo].height);
  85. int leftLeftBotX = (int)map(p3.x, 0, width, 0, images[imageNo].width);
  86. int leftLeftBotY = (int)map(p3.y, 0, height, 0, images[imageNo].height);
  87. int rightLeftTopX = leftRightTopX;
  88. int rightLeftTopY = leftRightTopY;
  89. int rightRightTopX = (int)map(p2.x, 0, width, 0, images[imageNo].width);
  90. int rightRightTopY = (int)map(p2.y, 0, height, 0, images[imageNo].height);
  91. int rightRightBotX = (int)map(p4.x, 0, width, 0, images[imageNo].width);
  92. int rightRightBotY = (int)map(p4.y, 0, height, 0, images[imageNo].height);
  93. int rightLeftBotX = leftRightBotX;
  94. int rightLeftBotY = leftRightBotY;
  95. //beispielcommands:
  96. //for f in ./*.jpg; do convert "$f" \( -clone 0 -fill black -colorize 100 -fill white -draw "polygon 3218,2414 4882,2414 4882,2621 3218,4771" \) -alpha off -compose copy_opacity -composite -trim +repage "$f"_left.jpg; done
  97. //for f in ./*.jpg; do convert "$f" \( -clone 0 -fill black -colorize 100 -fill white -draw "polygon 3218,2414 4882,2414 4882,2621 3218,4771" \) -alpha off -compose copy_opacity -composite -trim +repage "$f"_right.jpg; done
  98. String folderName = String.valueOf((int)random(100000000));
  99. String cmdleft = "for f in ./*.jpg; do convert \"$f\" \\( -clone 0 -fill black -colorize 100 -fill white -draw \"polygon " + leftLeftTopX + "," + leftLeftTopY + " " + leftRightTopX + "," + leftRightTopY + " " + leftRightBotX + "," + leftRightBotY + " " + leftLeftBotX + "," + leftLeftBotY + "\" \\) -alpha off -compose copy_opacity -composite -trim +repage " + folderName + "/\"$f\"_left.jpg; done";
  100. String cmdright = "for f in ./*.jpg; do convert \"$f\" \\( -clone 0 -fill black -colorize 100 -fill white -draw \"polygon " + rightLeftTopX + "," + rightLeftTopY + " " + rightRightTopX + "," + rightRightTopY + " " + rightRightBotX + "," + rightRightBotY + " " + rightLeftBotX + "," + rightLeftBotY + "\" \\) -alpha off -compose copy_opacity -composite -trim +repage " + folderName + "/\"$f\"_right.jpg; done";
  101. String cmdpdf = "convert " + folderName + "/*.jpg notizheft.pdf";
  102. println(cmdleft);
  103. println(cmdright);
  104. //execl("/bin/sh", "-c", "cd", (const char *)0);
  105. //exec("/bin/sh -c cd " + folderURI + " && " + cmdleft);
  106. //String[] runConvert = { "/bin/bash", "-c", "cd " + folderURI + " && mkdir " + folderName + " && " + cmdleft + " && " + cmdright + " && " + cmdpdf };
  107. String[] runConvert = { "/bin/bash", "-c", "cd " + folderURI + " && mkdir " + folderName + " && " + cmdleft + " && " + cmdright };
  108. if (Execute) exec(runConvert);
  109. //println(leftLeftTopX + "," + leftLeftTopY + " " + leftRightTopX + "," + leftRightTopY + " " + leftRightBotX + "," + leftRightBotY + " " + leftLeftBotX + "," + leftLeftBotY);
  110. //println(rightLeftTopX + "," + rightLeftTopY + " " + rightRightTopX + "," + rightRightTopY + " " + rightRightBotX + "," + rightRightBotY + " " + rightLeftBotX + "," + rightLeftBotY);
  111. /*
  112. println((int)map(p1.x, 0, width, 0, images[imageNo].width));
  113. println((int)map(p1.y, 0, height, 0, images[imageNo].height));
  114. println((int)map(p2.x, 0, width, 0, images[imageNo].width));
  115. println((int)map(p2.y, 0, height, 0, images[imageNo].height));
  116. println((int)map(p3.x, 0, width, 0, images[imageNo].width));
  117. println((int)map(p3.y, 0, height, 0, images[imageNo].height));
  118. println((int)map(p4.x, 0, width, 0, images[imageNo].width));
  119. println((int)map(p4.y, 0, height, 0, images[imageNo].height));*/
  120. }
  121. }