我可以以不同于处理尺寸的分辨率保存草图吗?

时间:2015-11-20 00:14:36

标签: processing

我需要打印我的一张草图,为此我需要将它保存在一个大分辨率上。至少5000px x 5000px。问题是我不能用这个尺寸运行我的草图。有没有什么方法可以用不同于草图size()

的分辨率保存帧

为了保存我正在使用:

void mousePressed(){
  save("myfile-"+hour()+""+minute()+""+second()+".tif");
}

任何提示将不胜感激。 感谢

2 个答案:

答案 0 :(得分:2)

我建议您查看Processing's pdf library及其示例(处理>示例>库> pdf)。 Bellow是它附带的基本Mouse Press示例,略微调整以调整为5000x5000。

/**
 * Mouse Press. 
 * 
 * Saves one PDF of the contents of the display window 
 * each time the mouse is pressed.
 */


    import processing.pdf.*;

    boolean saveOneFrame = false;

    void setup() {
      size(500, 500);
      frameRate(24);
    }

    void draw() {
      if(saveOneFrame == true) {
        size(5000,5000);
        beginRecord(PDF, "Line.pdf"); 
      }

      background(255);
      stroke(0, 20);
      strokeWeight(20.0);
      line(mouseX, 0, width-mouseY, height);

      if(saveOneFrame == true) {
        endRecord();
        saveOneFrame = false;
        size(500,500); 
      }
    }

    void mousePressed() {
      saveOneFrame = true; 
    }

如果您每隔一段时间保存一次,这应该可行。 对于打印,矢量PDF应该比放大的光栅图像更好。 即使以500x500格式保存PDF文件,也​​可以使用矢量格式进行放大,而不会有任何质量损失。

如果由于某种原因你需要保存真正大的打印件并尽可能快地运行程序,这将会更复杂,但并非不可能。 您可以将每个绘图命令序列化到一个单独的线程中的文件(因此动画线程不会断断续续)。这个文件可以在一个单独的程序中读取,该程序简单地读取每一条指令并将其呈现为大规模的pdf。您可以使用Engine26数字绘画系统在实践中看到这个概念:

Engine26

答案 1 :(得分:1)

选项1 :只需像现在一样保存它们,然后在Processing之外进行缩放。您只需右键单击并转到“调整图片大小”即可在Windows中执行此操作,或者您可以使用ImageMagic之类的内容。这样做的好处就是不必更改草图,您可能可以使用更好的缩放算法来消除难看的大小调整工件。

选项2 :创建与屏幕尺寸相同的PImage。然后将PImage的像素设置为屏幕的像素。然后,您可以将该图像缩放并保存。它可能看起来像这样:

void setup(){
  size(100, 100);
}

void draw(){
  background(0);
  ellipse(mouseX, mouseY, 20, 20);
}

void mousePressed(){
 PImage img = createImage(100, 100, RGB);
 img.set(0, 0, get());
 img.resize(1000, 1000);
 img.save("myfile-"+hour()+""+minute()+""+second()+".tif");
}