36
36
class TileWorker (Process ):
37
37
"""A child process that generates and writes tiles."""
38
38
39
- def __init__ (self , queue , slidepath , tile_size , overlap ):
39
+ def __init__ (self , queue , slidepath , tile_size , overlap , quality ):
40
40
Process .__init__ (self , name = 'TileWorker' )
41
41
self .daemon = True
42
42
self ._queue = queue
43
43
self ._slidepath = slidepath
44
44
self ._tile_size = tile_size
45
45
self ._overlap = overlap
46
+ self ._quality = quality
46
47
self ._slide = None
47
48
48
49
def run (self ):
@@ -59,7 +60,7 @@ def run(self):
59
60
dz = self ._get_dz (associated )
60
61
last_associated = associated
61
62
tile = dz .get_tile (level , address )
62
- tile .save (outfile , quality = 90 )
63
+ tile .save (outfile , quality = self . _quality )
63
64
self ._queue .task_done ()
64
65
65
66
def _get_dz (self , associated = None ):
@@ -121,7 +122,7 @@ class DeepZoomStaticTiler(object):
121
122
"""Handles generation of tiles and metadata for all images in a slide."""
122
123
123
124
def __init__ (self , slidepath , basename , format , tile_size , overlap ,
124
- workers , with_viewer ):
125
+ quality , workers , with_viewer ):
125
126
if with_viewer :
126
127
# Check extra dependency before doing a bunch of work
127
128
import jinja2
@@ -135,7 +136,7 @@ def __init__(self, slidepath, basename, format, tile_size, overlap,
135
136
self ._with_viewer = with_viewer
136
137
self ._dzi_data = {}
137
138
for _i in range (workers ):
138
- TileWorker (self ._queue , slidepath , tile_size , overlap ).start ()
139
+ TileWorker (self ._queue , slidepath , tile_size , overlap , quality ).start ()
139
140
140
141
def run (self ):
141
142
self ._run_image ()
@@ -234,6 +235,9 @@ def _shutdown(self):
234
235
help = 'number of worker processes to start [4]' )
235
236
parser .add_option ('-o' , '--output' , metavar = 'NAME' , dest = 'basename' ,
236
237
help = 'base name of output file' )
238
+ parser .add_option ('-q' , '--quality' , metavar = 'QUALITY' , dest = 'quality' ,
239
+ type = 'int' , default = 90 ,
240
+ help = 'JPEG compression quality [90]' )
237
241
parser .add_option ('-r' , '--viewer' , dest = 'with_viewer' ,
238
242
action = 'store_true' ,
239
243
help = 'generate directory tree with HTML viewer' )
@@ -250,5 +254,5 @@ def _shutdown(self):
250
254
opts .basename = os .path .splitext (os .path .basename (slidepath ))[0 ]
251
255
252
256
DeepZoomStaticTiler (slidepath , opts .basename , opts .format ,
253
- opts .tile_size , opts .overlap , opts .workers ,
257
+ opts .tile_size , opts .overlap , opts .quality , opts . workers ,
254
258
opts .with_viewer ).run ()
0 commit comments