forked from bartvdbraak/blender
netrender:
thumbnails on the web interface (resized with imagemagick or compatible if present, fullsize otherwise) Clicking on the "show" link shows the thumbnail associated with one frame. Clicking on a second one shows all frames in the range. Clicking on more frames extends the range. Clicking on a thumbnail (or on the show link of a visible thumbnail) hides all thumbnails.
This commit is contained in:
parent
28b1824fd0
commit
ef8179f7cb
@ -258,6 +258,12 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
|
||||
bpy.ops.image.open(path = job.save_path + "%04d" % frame_number + ".exr")
|
||||
img = bpy.data.images["%04d" % frame_number + ".exr"]
|
||||
img.save(filename)
|
||||
|
||||
try:
|
||||
process = subprocess.Popen(["convert", filename, "-resize", "300x300", filename])
|
||||
process.wait()
|
||||
except:
|
||||
pass
|
||||
|
||||
f = open(filename, 'rb')
|
||||
self.send_head(content = "image/jpeg")
|
||||
|
@ -37,8 +37,11 @@ def get(handler):
|
||||
output("<link rel='stylesheet' href='/html/netrender.css' type='text/css'>")
|
||||
|
||||
|
||||
def link(text, url):
|
||||
return "<a href='%s'>%s</a>" % (url, text)
|
||||
def link(text, url, script=""):
|
||||
return "<a href='%s' %s>%s</a>" % (url, script, text)
|
||||
|
||||
def tag(name, text, attr=""):
|
||||
return "<%s %s>%s</%s>" % (name, attr, text, name)
|
||||
|
||||
def startTable(border=1, class_style = None, caption = None):
|
||||
output("<table border='%i'" % border)
|
||||
@ -259,7 +262,7 @@ def get(handler):
|
||||
output("<h2>Frames</h2>")
|
||||
|
||||
startTable()
|
||||
headerTable("no", "status", "render time", "slave", "log", "result")
|
||||
headerTable("no", "status", "render time", "slave", "log", "result", "")
|
||||
|
||||
for frame in job.frames:
|
||||
rowTable(
|
||||
@ -269,7 +272,8 @@ def get(handler):
|
||||
frame.slave.name if frame.slave else " ",
|
||||
link("view log", logURL(job_id, frame.number)) if frame.log_path else " ",
|
||||
link("view result", renderURL(job_id, frame.number)) + " [" +
|
||||
link("jpeg", renderURL(job_id, frame.number, exr = False)) + "]" if frame.status == DONE else " "
|
||||
tag("span", "show", attr="class='thumb' onclick='showThumb(%s, %i)'" % (job.id, frame.number)) + "]" if frame.status == DONE else " ",
|
||||
"<img name='thumb%i' title='hide thumbnails' src='' class='thumb' onclick='showThumb(%s, %i)'>" % (frame.number, job.id, frame.number)
|
||||
)
|
||||
|
||||
endTable()
|
||||
|
@ -60,7 +60,6 @@ button {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
.cache {
|
||||
display: none;
|
||||
}
|
||||
@ -72,4 +71,14 @@ button {
|
||||
.rules {
|
||||
width: 60em;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
img.thumb {
|
||||
display: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
span.thumb {
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
@ -1,3 +1,7 @@
|
||||
lastFrame = -1
|
||||
maxFrame = -1
|
||||
minFrame = -1
|
||||
|
||||
function request(url, data)
|
||||
{
|
||||
xmlhttp = new XMLHttpRequest();
|
||||
@ -46,6 +50,70 @@ function balance_enable(id, value)
|
||||
request("/balance_enable", "{" + id + ":" + value + "}");
|
||||
}
|
||||
|
||||
function showThumb(job, frame)
|
||||
{
|
||||
if (lastFrame != -1) {
|
||||
if (maxFrame != -1 && minFrame != -1) {
|
||||
if (frame >= minFrame && frame <= maxFrame) {
|
||||
for(i = minFrame; i <= maxFrame; i=i+1) {
|
||||
toggleThumb(job, i);
|
||||
}
|
||||
minFrame = -1;
|
||||
maxFrame = -1;
|
||||
lastFrame = -1;
|
||||
} else if (frame > maxFrame) {
|
||||
for(i = maxFrame+1; i <= frame; i=i+1) {
|
||||
toggleThumb(job, i);
|
||||
}
|
||||
maxFrame = frame;
|
||||
lastFrame = frame;
|
||||
} else {
|
||||
for(i = frame; i <= minFrame-1; i=i+1) {
|
||||
toggleThumb(job, i);
|
||||
}
|
||||
minFrame = frame;
|
||||
lastFrame = frame;
|
||||
}
|
||||
} else if (frame == lastFrame) {
|
||||
toggleThumb(job, frame);
|
||||
} else if (frame < lastFrame) {
|
||||
minFrame = frame;
|
||||
maxFrame = lastFrame;
|
||||
|
||||
for(i = minFrame; i <= maxFrame-1; i=i+1) {
|
||||
toggleThumb(job, i);
|
||||
}
|
||||
lastFrame = frame;
|
||||
} else {
|
||||
minFrame = lastFrame;
|
||||
maxFrame = frame;
|
||||
|
||||
for(i = minFrame+1; i <= maxFrame; i=i+1) {
|
||||
toggleThumb(job, i);
|
||||
}
|
||||
lastFrame = frame;
|
||||
}
|
||||
} else {
|
||||
toggleThumb(job, frame);
|
||||
}
|
||||
}
|
||||
|
||||
function toggleThumb(job, frame)
|
||||
{
|
||||
img = document.images["thumb" + frame];
|
||||
url = "/render_" + job + "_" + frame + ".jpg"
|
||||
|
||||
if (img.style.display == "block") {
|
||||
img.style.display = "none";
|
||||
img.src = "";
|
||||
lastFrame = -1;
|
||||
} else {
|
||||
img.src = url;
|
||||
img.style.display = "block";
|
||||
lastFrame = frame;
|
||||
}
|
||||
}
|
||||
|
||||
function returnObjById( id )
|
||||
{
|
||||
if (document.getElementById)
|
||||
|
@ -148,8 +148,8 @@ def fileURL(job_id, file_index):
|
||||
def logURL(job_id, frame_number):
|
||||
return "/log_%s_%i.log" % (job_id, frame_number)
|
||||
|
||||
def renderURL(job_id, frame_number, exr = True):
|
||||
return "/render_%s_%i.%s" % (job_id, frame_number, "exr" if exr else "jpg")
|
||||
def renderURL(job_id, frame_number):
|
||||
return "/render_%s_%i.exr" % (job_id, frame_number)
|
||||
|
||||
def cancelURL(job_id):
|
||||
return "/cancel_%s" % (job_id)
|
||||
|
Loading…
Reference in New Issue
Block a user