Removed saving of redundant blank render tiles.
This commit is contained in:
@@ -28,7 +28,7 @@ import time
|
|||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from itertools import chain, product
|
from itertools import chain, product
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image, ImageColor
|
||||||
|
|
||||||
from . import c_overviewer
|
from . import c_overviewer
|
||||||
from . import rendermodes
|
from . import rendermodes
|
||||||
@@ -1049,7 +1049,8 @@ class TileSet(object):
|
|||||||
The argument is a RenderTile object
|
The argument is a RenderTile object
|
||||||
|
|
||||||
The image is rendered and saved to disk in the place this tileset is
|
The image is rendered and saved to disk in the place this tileset is
|
||||||
configured to save images.
|
configured to save images, unless the rendered image is blank, in
|
||||||
|
which case no image is saved to disk.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -1073,18 +1074,6 @@ class TileSet(object):
|
|||||||
logging.debug("%s deleted", tile)
|
logging.debug("%s deleted", tile)
|
||||||
return
|
return
|
||||||
|
|
||||||
# Create the directory if not exists
|
|
||||||
dirdest = os.path.dirname(imgpath)
|
|
||||||
if not os.path.exists(dirdest):
|
|
||||||
try:
|
|
||||||
os.makedirs(dirdest)
|
|
||||||
except OSError as e:
|
|
||||||
# Ignore errno EEXIST: file exists. Due to a race condition,
|
|
||||||
# two processes could conceivably try and create the same
|
|
||||||
# directory at the same time
|
|
||||||
if e.errno != errno.EEXIST:
|
|
||||||
raise
|
|
||||||
|
|
||||||
# Compile this image
|
# Compile this image
|
||||||
tileimg = Image.new("RGBA", (384, 384), self.options['bgcolor'])
|
tileimg = Image.new("RGBA", (384, 384), self.options['bgcolor'])
|
||||||
|
|
||||||
@@ -1120,6 +1109,25 @@ class TileSet(object):
|
|||||||
logging.error("Full error was:", exc_info=1)
|
logging.error("Full error was:", exc_info=1)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Don't save if the output is blank (384*384 pixels all colored bgcolor at 0% opacity)
|
||||||
|
# The viewer will fill in this missing tile with the default blank tile created in the
|
||||||
|
# AssetManager, so there's no need to spend compute time on compressing and disk space
|
||||||
|
# & network traffic on serving a blank image.
|
||||||
|
transparent_color = ImageColor.getrgb(self.options['bgcolor']) + (0,)
|
||||||
|
if tileimg.getcolors() == [(147456, transparent_color)]:
|
||||||
|
return
|
||||||
|
|
||||||
|
# Create the directory if not exists
|
||||||
|
dirdest = os.path.dirname(imgpath)
|
||||||
|
if not os.path.exists(dirdest):
|
||||||
|
try:
|
||||||
|
os.makedirs(dirdest)
|
||||||
|
except OSError as e:
|
||||||
|
# Ignore errno EEXIST: file exists. Due to a race condition,
|
||||||
|
# two processes could conceivably try and create the same
|
||||||
|
# directory at the same time
|
||||||
|
if e.errno != errno.EEXIST:
|
||||||
|
raise
|
||||||
# Save them
|
# Save them
|
||||||
with FileReplacer(imgpath, capabilities=self.fs_caps) as tmppath:
|
with FileReplacer(imgpath, capabilities=self.fs_caps) as tmppath:
|
||||||
if self.imgextension == 'jpg':
|
if self.imgextension == 'jpg':
|
||||||
|
|||||||
Reference in New Issue
Block a user