mirror of
https://github.com/ciromattia/kcc
synced 2025-12-20 13:11:47 +00:00
Real Panel View - Ignore margins (close #60)
This commit is contained in:
@@ -81,64 +81,64 @@ def buildHTML(path, imgfile):
|
|||||||
if options.panelview:
|
if options.panelview:
|
||||||
if rotate:
|
if rotate:
|
||||||
if options.righttoleft:
|
if options.righttoleft:
|
||||||
f.writelines(["<div id=\"BoxTL\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
order = [1, 3, 2, 4]
|
||||||
"'{\"targetId\":\"BoxTL-Panel-Parent\", \"ordinal\":1}'></a></div>\n",
|
|
||||||
"<div id=\"BoxTR\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
|
||||||
"'{\"targetId\":\"BoxTR-Panel-Parent\", \"ordinal\":3}'></a></div>\n",
|
|
||||||
"<div id=\"BoxBL\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
|
||||||
"'{\"targetId\":\"BoxBL-Panel-Parent\", \"ordinal\":2}'></a></div>\n",
|
|
||||||
"<div id=\"BoxBR\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify="
|
|
||||||
"'{\"targetId\":\"BoxBR-Panel-Parent\", \"ordinal\":4}'></a></div>\n"
|
|
||||||
])
|
|
||||||
else:
|
else:
|
||||||
f.writelines(["<div id=\"BoxTL\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
order = [2, 4, 1, 3]
|
||||||
"'{\"targetId\":\"BoxTL-Panel-Parent\", \"ordinal\":2}'></a></div>\n",
|
|
||||||
"<div id=\"BoxTR\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
|
||||||
"'{\"targetId\":\"BoxTR-Panel-Parent\", \"ordinal\":4}'></a></div>\n",
|
|
||||||
"<div id=\"BoxBL\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
|
||||||
"'{\"targetId\":\"BoxBL-Panel-Parent\", \"ordinal\":1}'></a></div>\n",
|
|
||||||
"<div id=\"BoxBR\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify="
|
|
||||||
"'{\"targetId\":\"BoxBR-Panel-Parent\", \"ordinal\":3}'></a></div>\n"
|
|
||||||
])
|
|
||||||
else:
|
else:
|
||||||
if options.righttoleft:
|
if options.righttoleft:
|
||||||
f.writelines(["<div id=\"BoxTL\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
order = [2, 1, 4, 3]
|
||||||
"'{\"targetId\":\"BoxTL-Panel-Parent\", \"ordinal\":2}'></a></div>\n",
|
|
||||||
"<div id=\"BoxTR\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
|
||||||
"'{\"targetId\":\"BoxTR-Panel-Parent\", \"ordinal\":1}'></a></div>\n",
|
|
||||||
"<div id=\"BoxBL\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
|
||||||
"'{\"targetId\":\"BoxBL-Panel-Parent\", \"ordinal\":4}'></a></div>\n",
|
|
||||||
"<div id=\"BoxBR\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify="
|
|
||||||
"'{\"targetId\":\"BoxBR-Panel-Parent\", \"ordinal\":3}'></a></div>\n"
|
|
||||||
])
|
|
||||||
else:
|
else:
|
||||||
|
order = [1, 2, 3, 4]
|
||||||
f.writelines(["<div id=\"BoxTL\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
f.writelines(["<div id=\"BoxTL\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
||||||
"'{\"targetId\":\"BoxTL-Panel-Parent\", \"ordinal\":1}'></a></div>\n",
|
"'{\"targetId\":\"BoxTL-Panel-Parent\", \"ordinal\":" + str(order[0]) + "}'></a></div>\n",
|
||||||
"<div id=\"BoxTR\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
"<div id=\"BoxTR\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
||||||
"'{\"targetId\":\"BoxTR-Panel-Parent\", \"ordinal\":2}'></a></div>\n",
|
"'{\"targetId\":\"BoxTR-Panel-Parent\", \"ordinal\":" + str(order[1]) + "}'></a></div>\n",
|
||||||
"<div id=\"BoxBL\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
"<div id=\"BoxBL\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify=",
|
||||||
"'{\"targetId\":\"BoxBL-Panel-Parent\", \"ordinal\":3}'></a></div>\n",
|
"'{\"targetId\":\"BoxBL-Panel-Parent\", \"ordinal\":" + str(order[2]) + "}'></a></div>\n",
|
||||||
"<div id=\"BoxBR\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify="
|
"<div id=\"BoxBR\"><a class=\"app-amzn-magnify\" data-app-amzn-magnify="
|
||||||
"'{\"targetId\":\"BoxBR-Panel-Parent\", \"ordinal\":4}'></a></div>\n"
|
"'{\"targetId\":\"BoxBR-Panel-Parent\", \"ordinal\":" + str(order[3]) + "}'></a></div>\n"
|
||||||
])
|
])
|
||||||
if options.quality == 2:
|
if options.quality == 2:
|
||||||
imgfilepv = string.split(imgfile, ".")
|
imgfilepv = string.split(imgfile, ".")
|
||||||
|
imgfilepv[0] = imgfilepv[0].split("_kccx")[0]
|
||||||
imgfilepv[0] += "_kcchq"
|
imgfilepv[0] += "_kcchq"
|
||||||
imgfilepv = string.join(imgfilepv, ".")
|
imgfilepv = string.join(imgfilepv, ".")
|
||||||
else:
|
else:
|
||||||
imgfilepv = imgfile
|
imgfilepv = imgfile
|
||||||
f.writelines(["<div id=\"BoxTL-Panel-Parent\" class=\"target-mag-parent\"><div id=\"BoxTL-Panel\" class=\"",
|
if not "_kccx" in filename[0]:
|
||||||
"target-mag\"><img src=\"", "../" * backref, "Images/", postfix, imgfilepv, "\" alt=\"",
|
for box in ["BoxTL", "BoxTR", "BoxBL", "BoxBR"]:
|
||||||
imgfilepv, "\"/></div></div>\n",
|
f.writelines(["<div id=\"" + box + "-Panel-Parent\" class=\"target-mag-parent\"><div id=\"" + box,
|
||||||
"<div id=\"BoxTR-Panel-Parent\" class=\"target-mag-parent\"><div id=\"BoxTR-Panel\" class=\"",
|
"-Panel\" class=\"target-mag\"><img src=\"", "../" * backref, "Images/", postfix,
|
||||||
"target-mag\"><img src=\"", "../" * backref, "Images/", postfix, imgfilepv, "\" alt=\"",
|
imgfilepv, "\" alt=\"" + imgfilepv, "\"/></div></div>\n"
|
||||||
imgfilepv, "\"/></div></div>\n",
|
])
|
||||||
"<div id=\"BoxBL-Panel-Parent\" class=\"target-mag-parent\"><div id=\"BoxBL-Panel\" class=\"",
|
else:
|
||||||
"target-mag\"><img src=\"", "../" * backref, "Images/", postfix, imgfilepv, "\" alt=\"",
|
xy = string.split(filename[0], "_kccx")[1]
|
||||||
imgfilepv, "\"/></div></div>\n",
|
x = string.split(xy, "_kccy")[0].lstrip("0")
|
||||||
"<div id=\"BoxBR-Panel-Parent\" class=\"target-mag-parent\"><div id=\"BoxBR-Panel\" class=\"",
|
y = string.split(xy, "_kccy")[1].lstrip("0")
|
||||||
"target-mag\"><img src=\"", "../" * backref, "Images/", postfix, imgfilepv, "\" alt=\"",
|
if x != "":
|
||||||
imgfilepv, "\"/></div></div>\n"
|
x = "-" + str(float(x)/100) + "%"
|
||||||
|
else:
|
||||||
|
x = "0%"
|
||||||
|
if y != "":
|
||||||
|
y = "-" + str(float(y)/100) + "%"
|
||||||
|
else:
|
||||||
|
y = "0%"
|
||||||
|
f.writelines(["<div id=\"BoxTL-Panel-Parent\" class=\"target-mag-parent\"><div id=\"BoxTL",
|
||||||
|
"-Panel\" class=\"target-mag\"><img style=\"left:" + x + ";top:" + y + ";\" src=\"",
|
||||||
|
"../" * backref, "Images/", postfix, imgfilepv, "\" alt=\"" + imgfilepv,
|
||||||
|
"\"/></div></div>\n",
|
||||||
|
"<div id=\"BoxTR-Panel-Parent\" class=\"target-mag-parent\"><div id=\"BoxTR",
|
||||||
|
"-Panel\" class=\"target-mag\"><img style=\"right:" + x + ";top:" + y + ";\" src=\"",
|
||||||
|
"../" * backref, "Images/", postfix, imgfilepv, "\" alt=\"" + imgfilepv,
|
||||||
|
"\"/></div></div>\n",
|
||||||
|
"<div id=\"BoxBL-Panel-Parent\" class=\"target-mag-parent\"><div id=\"BoxBL",
|
||||||
|
"-Panel\" class=\"target-mag\"><img style=\"left:" + x + ";bottom:" + y + ";\" src=\"",
|
||||||
|
"../" * backref, "Images/", postfix, imgfilepv, "\" alt=\"" + imgfilepv,
|
||||||
|
"\"/></div></div>\n",
|
||||||
|
"<div id=\"BoxBR-Panel-Parent\" class=\"target-mag-parent\"><div id=\"BoxBR",
|
||||||
|
"-Panel\" class=\"target-mag\"><img style=\"right:" + x + ";bottom:" + y + ";\" src=\"",
|
||||||
|
"../" * backref, "Images/", postfix, imgfilepv, "\" alt=\"" + imgfilepv,
|
||||||
|
"\"/></div></div>\n",
|
||||||
])
|
])
|
||||||
f.writelines(["</div>\n</body>\n</html>"])
|
f.writelines(["</div>\n</body>\n</html>"])
|
||||||
f.close()
|
f.close()
|
||||||
|
|||||||
31
kcc/image.py
31
kcc/image.py
@@ -146,6 +146,8 @@ class ComicPage:
|
|||||||
os.remove(os.path.join(targetdir, self.filename))
|
os.remove(os.path.join(targetdir, self.filename))
|
||||||
else:
|
else:
|
||||||
suffix += "_kcchq"
|
suffix += "_kcchq"
|
||||||
|
if self.border:
|
||||||
|
suffix += "_kccx" + str(self.border[0]) + "_kccy" + str(self.border[1])
|
||||||
if forcepng:
|
if forcepng:
|
||||||
self.image.save(os.path.join(targetdir, os.path.splitext(self.filename)[0] + suffix + ".png"), "PNG")
|
self.image.save(os.path.join(targetdir, os.path.splitext(self.filename)[0] + suffix + ".png"), "PNG")
|
||||||
else:
|
else:
|
||||||
@@ -185,8 +187,13 @@ class ComicPage:
|
|||||||
fill = 'white'
|
fill = 'white'
|
||||||
if qualityMode == 0:
|
if qualityMode == 0:
|
||||||
size = (self.size[0], self.size[1])
|
size = (self.size[0], self.size[1])
|
||||||
|
generateBorder = True
|
||||||
|
elif qualityMode == 1:
|
||||||
|
size = (self.panelviewsize[0], self.panelviewsize[1])
|
||||||
|
generateBorder = True
|
||||||
else:
|
else:
|
||||||
size = (self.panelviewsize[0], self.panelviewsize[1])
|
size = (self.panelviewsize[0], self.panelviewsize[1])
|
||||||
|
generateBorder = False
|
||||||
# Kindle Paperwhite/Touch - Force upscale of splited pages to increase readability
|
# Kindle Paperwhite/Touch - Force upscale of splited pages to increase readability
|
||||||
if isSplit and landscapeMode:
|
if isSplit and landscapeMode:
|
||||||
upscale = True
|
upscale = True
|
||||||
@@ -195,15 +202,30 @@ class ComicPage:
|
|||||||
borderw = (self.size[0] - self.image.size[0]) / 2
|
borderw = (self.size[0] - self.image.size[0]) / 2
|
||||||
borderh = (self.size[1] - self.image.size[1]) / 2
|
borderh = (self.size[1] - self.image.size[1]) / 2
|
||||||
self.image = ImageOps.expand(self.image, border=(borderw, borderh), fill=fill)
|
self.image = ImageOps.expand(self.image, border=(borderw, borderh), fill=fill)
|
||||||
|
if generateBorder:
|
||||||
|
self.border = [int(round(float(borderw)/float(self.image.size[0])*100, 2)*100*1.5),
|
||||||
|
int(round(float(borderh)/float(self.image.size[1])*100, 2)*100*1.5)]
|
||||||
|
else:
|
||||||
|
self.border = None
|
||||||
return self.image
|
return self.image
|
||||||
else:
|
else:
|
||||||
method = Image.BILINEAR
|
method = Image.BILINEAR
|
||||||
if stretch: # if stretching call directly resize() without other considerations.
|
if stretch: # if stretching call directly resize() without other considerations.
|
||||||
self.image = self.image.resize(size, method)
|
self.image = self.image.resize(size, method)
|
||||||
|
if generateBorder:
|
||||||
|
if fill == 'white':
|
||||||
|
border = ImageOps.invert(self.image).getbbox()
|
||||||
|
else:
|
||||||
|
border = self.image.getbbox()
|
||||||
|
self.border = [int(round(float(border[0])/float(self.image.size[0])*100, 2)*100*1.5),
|
||||||
|
int(round(float(border[1])/float(self.image.size[1])*100, 2)*100*1.5)]
|
||||||
|
else:
|
||||||
|
self.border = None
|
||||||
return self.image
|
return self.image
|
||||||
ratioDev = float(self.size[0]) / float(self.size[1])
|
ratioDev = float(self.size[0]) / float(self.size[1])
|
||||||
if (float(self.image.size[0]) / float(self.image.size[1])) < ratioDev:
|
if (float(self.image.size[0]) / float(self.image.size[1])) < ratioDev:
|
||||||
if isSplit and landscapeMode:
|
if isSplit and landscapeMode:
|
||||||
|
generateBorder = False
|
||||||
diff = int(self.image.size[1] * ratioDev) - self.image.size[0]
|
diff = int(self.image.size[1] * ratioDev) - self.image.size[0]
|
||||||
self.image = ImageOps.expand(self.image, border=(diff / 2, 0), fill=fill)
|
self.image = ImageOps.expand(self.image, border=(diff / 2, 0), fill=fill)
|
||||||
tempImg = Image.new(self.image.mode, (self.image.size[0] + diff, self.image.size[1]), fill)
|
tempImg = Image.new(self.image.mode, (self.image.size[0] + diff, self.image.size[1]), fill)
|
||||||
@@ -219,6 +241,15 @@ class ComicPage:
|
|||||||
diff = int(self.image.size[0] / ratioDev) - self.image.size[1]
|
diff = int(self.image.size[0] / ratioDev) - self.image.size[1]
|
||||||
self.image = ImageOps.expand(self.image, border=(0, diff / 2), fill=fill)
|
self.image = ImageOps.expand(self.image, border=(0, diff / 2), fill=fill)
|
||||||
self.image = ImageOps.fit(self.image, size, method=method, centering=(0.5, 0.5))
|
self.image = ImageOps.fit(self.image, size, method=method, centering=(0.5, 0.5))
|
||||||
|
if generateBorder:
|
||||||
|
if fill == 'white':
|
||||||
|
border = ImageOps.invert(self.image).getbbox()
|
||||||
|
else:
|
||||||
|
border = self.image.getbbox()
|
||||||
|
self.border = [int(round(float(border[0])/float(self.image.size[0])*100, 2)*100*1.5),
|
||||||
|
int(round(float(border[1])/float(self.image.size[1])*100, 2)*100*1.5)]
|
||||||
|
else:
|
||||||
|
self.border = None
|
||||||
return self.image
|
return self.image
|
||||||
|
|
||||||
def splitPage(self, targetdir, righttoleft=False, rotate=False):
|
def splitPage(self, targetdir, righttoleft=False, rotate=False):
|
||||||
|
|||||||
Reference in New Issue
Block a user