Processing 我能否以与处理中的尺寸不同的分辨率保存草图?
我需要打印一张草图,为此我需要将它保存在一个大分辨率上。至少Processing 我能否以与处理中的尺寸不同的分辨率保存草图?,processing,Processing,我需要打印一张草图,为此我需要将它保存在一个大分辨率上。至少5000px 5000px。问题是我不能用那样的尺寸画草图。是否有任何方法可以以不同于草图的分辨率保存帧size() 为了保存,我正在使用: void mousePressed(){ save("myfile-"+hour()+""+minute()+""+second()+".tif"); } 任何小费都将不胜感激。 谢谢选项1:只需像现在一样保存它们,然后在处理之外缩放它们。您可以在Windows中通过右键单击并转到“调整图片
5000px 5000px
。问题是我不能用那样的尺寸画草图。是否有任何方法可以以不同于草图的分辨率保存帧size()
为了保存,我正在使用:
void mousePressed(){
save("myfile-"+hour()+""+minute()+""+second()+".tif");
}
任何小费都将不胜感激。
谢谢选项1:只需像现在一样保存它们,然后在处理之外缩放它们。您可以在Windows中通过右键单击并转到“调整图片大小”来执行此操作,也可以使用类似的方法。这样做的好处是根本不必更改草图,而且您可能能够使用更好的缩放算法来消除难看的大小调整瑕疵 选项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");
}
选项1:只需像现在一样保存它们,然后在处理之外缩放它们。您可以在Windows中通过右键单击并转到“调整图片大小”来执行此操作,也可以使用类似的方法。这样做的好处是根本不必更改草图,而且您可能能够使用更好的缩放算法来消除难看的大小调整瑕疵 选项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");
}
我建议大家看看它的示例(处理>示例>库>pdf)。
Bellow是它附带的基本鼠标按键示例,稍微调整大小为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应该比放大光栅图像更适合打印。
即使将PDF文件保存为500x500,也可以以矢量格式放大,而不会造成任何质量损失
如果出于某种原因,您需要保存非常大的打印并尽可能快地运行您的程序,这将有点复杂,但并非不可能。
可以将每个绘制命令序列化为单独线程中的文件(这样动画线程就不会断断续续)。该文件可以在单独的程序中读取,该程序可以简单地读取每一条指令并将其呈现为大规模pdf。您可以在数字绘画系统的实践中看到这一概念:
我建议看一看它的示例(处理>示例>库>pdf)。
Bellow是它附带的基本鼠标按键示例,稍微调整大小为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应该比放大光栅图像更适合打印。
即使将PDF文件保存为500x500,也可以以矢量格式放大,而不会造成任何质量损失
如果出于某种原因,您需要保存非常大的打印并尽可能快地运行您的程序,这将有点复杂,但并非不可能。
可以将每个绘制命令序列化为单独线程中的文件(这样动画线程就不会断断续续)。该文件可以在单独的程序中读取,该程序可以简单地读取每一条指令并将其呈现为大规模pdf。您可以在数字绘画系统的实践中看到这一概念:
您每秒只保存一张图像?是的,我只需要一张用于打印的图像。我的想法是,当我点击草图时,它将以高分辨率保存。你每秒只保存一张图像?是的,我只需要一张图像,我将用于打印。我的想法是,当我点击草图时,它将以很大的分辨率保存它。谢谢!我选择了第二个选项,因为有时候ImageMagic在将文件转换为向量时可能有点不精确。谢谢!谢谢我选择了第二个选项,因为有时候ImageMagic在将文件转换为向量时可能有点不精确。谢谢!非常感谢乔治。我将再次测试这个解决方案,因为我记得我在研究时尝试过它,但从未在pdf中获得与我所看到的相同的质量。我会试试你的代码,让你知道。谢谢别担心,让我知道你进展如何。我猜您主要使用绘图命令,而不是像素,对吗?是的,实际上,与您发布的示例类似。我正在将JPG转换为图纸。像这个草图一样,再次感谢。这应该不是一个大问题,因为您链接到的示例代码只是对像素的亮度进行采样,粒子独立移动,因此绘制指令可以以高分辨率渲染(如果图像不是,则事件)…只需缩放坐标(使用
scale()
在呈现大pdf文件时,可以轻松完成这项工作)构图不错!我知道问题出在哪里了:PDF渲染器没有拾取您在setup()
中设置的noStroke()
。但是,您可以明确告诉PDF渲染器不使用笔划。只需将beginRecord()
行替换为以下两行:pgraphicsdpf pdf=(pgraphicsdpf)beginRecord(pdf,“Triangles.pdf”);pdf.noStroke()代码>。非常感谢乔治。我将再次测试这个解决方案,因为我记得我在研究时尝试过它,但从未在pdf中获得与我所看到的相同的质量。我会试试你的代码,让你知道。谢谢别担心,让我知道你进展如何。我猜您主要使用绘图命令,而不是像素,对吗?是的,实际上,与您发布的示例类似。我正在将JPG转换为图纸。再次感谢这个草图。这应该不是一个大问题,因为您链接的示例代码只是采样像素的亮度和粒子的移动