我正在尝试使用http://www.hypeframework.org/和processing.org创建图片。我想创建图像并存储在一个文件夹中,然后使用java spark在Web上显示它。以下是我开始的步骤。
我的问题是如何创建图像然后将其保存到webapp文件夹?我对炒作和处理绘图形状的东西比较新。以下是我放在一起的代码:
现在主要的spark控制器中的cimg.setup()会抛出java.lang.NumberFormatException:对于输入字符串:“#BC7A38,#996A37,#968063,#AB977C,#997949,#AE9162,#DFC597,# CAB790“错误。
我搜索谷歌,但找不到任何线索。我非常感谢任何有关如何完成任务的帮助。谢谢!//-- spark controller -
public class Main {
public static void main(String[] args) {
get("/", new TemplateViewRoute() {
@Override
public ModelAndView handle(Request req, Response res) throws Exception {
HashMap model = new HashMap();
HypeProcessing cimg = new HypeProcessing();
cimg.setup();
model.put("template", "templates/form.vtl");
return new ModelAndView(model, "templates/layout.vtl");
}
}, new VelocityTemplateEngine());
}
}
//--- HypeProcessing class ----
public class HypeProcessing extends PApplet
{
HDrawablePool pool;
HColorPool colors;
@Override
public void setup()
{
int h = 300;
int w = 300;
//size(w, h);
//H.init(this).background(Integer.parseInt("#202020"));
//smooth();
colors = new HColorPool(Integer.parseInt("#BC7A38,#996A37,#968063,#AB977C,#997949,#AE9162,#DFC597,#CAB790"));
pool = new HDrawablePool(121);
pool.autoAddToStage()
.add(new HShape("svg1.svg"))
.add(new HShape("svg2.svg"))
.add(new HShape("svg3.svg"))
.add(new HShape("svg4.svg"))
.add(new HShape("svg5.svg"))
.add(new HShape("svg6.svg"))
.layout(
new HGridLayout()
.startX(50)
.startY(50)
.spacing(50,50)
.cols(11)
)
.onCreate(
new HCallback() {
@Override
public void run(Object obj) {
HShape d = (HShape) obj;
d
.enableStyle(false)
.strokeJoin(ROUND)
.strokeCap(ROUND)
.strokeWeight(1)
.stroke(Integer.parseInt("#000000"))
// .anchorAt(H.CENTER)
.rotate( (int)random(4) * 90 )
.size( 50 + ( (int)random(4) * 50 ) ) // 50, 100, 150, 200
;
d.randomColors(colors.fillOnly());
}
}
)
.requestAll();
saveImage(w,h);
noLoop();
// ...
}
@Override
public void draw()
{
//rect(10, 10, 80, 80);
H.drawStage();
// ...
}
public void saveImage(int width, int height)
{
//Helper c = new Helper();
String p = "webapp/images/";
String fn = p+"image_"+Helper.generateRandomNumber();
PGraphics img = createGraphics(width, height);
img.beginDraw();
boolean use3D = false;
float alpha = 1;
H.stage().paintAll(img, use3D, alpha);
img.endDraw();
img.save(fn);
}
}
答案 0 :(得分:1)
处理使用自定义color
类型。您可以使用#ff00ff
等网页表示法,并在引擎盖下将整数存储起来,这样您甚至可以执行以下操作:
int c = #ff00ff;
但是,像Integer.parseInt()
这样的Java函数不知道如何处理Web表示法。 Java无法将"#ff00ff"
之类的字符串映射到int
值。这就是你收到错误的原因。
即使Java确实知道如何将网络表示法映射到int
值,您也会在单个String
内传递多个值,这没有多大意义。
但重点是,如果您使用的是Processing编辑器,则只能使用Web表示法。如果您使用的是Processing编辑器以外的其他内容,则必须使用color()
函数。
HColorPool(color(0, 255, 0), color(255, 0, 255), ...);
答案 1 :(得分:0)
有翻译的java代码: -
java.awt.Color.decode( “FF00FF”)的getRGB();
我在JRubyArt中使用它有点模糊