def resize_images(self,image_list,max_processes,percent_reduction):

        def resize_list(image_file,percent_reduction):

            jpg_file = re.sub('\.\w+$','.jpg',image_file)
            cmd = "convert -resize %(percent_reduction)d%% %(image_file)s %(jpg_file)s" % locals()
            print cmd

            process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            result = process.communicate()
            print result[0],result[1]

        params = []
        # Prepare parameter tuples
        for f in image_list:
            extension = re.search('\.(\w+)$',f).group(1).lower()

            guessed_type = mime.from_file(f)
            if extension not in guessed_type:
                logging.error("Mime type doesn't match it's extension: type: %s, file %s, aborting" %\
                    (guessed_type,f))

            else:
                params.append((f,percent_reduction))

        # Runs N concurrent processes based on config.
        m = MultiprocessMgmt(resize_list,params,max_processes)
        m.run()
    def convert_pdfs_to_images(self,pdf_file_list,max_processes,percent_reduction,density):

        def convert_list(pdf_file,density,percent_reduction):

            jpg_file = re.sub('\.[pP][dD][fF]$','_%d_%%04d.jpg' % percent_reduction,pdf_file)
            cmd = "convert -density %(density)d -resize %(percent_reduction)d%% %(pdf_file)s " % locals() + jpg_file
            print cmd

            process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            result = process.communicate()
            print result[0],result[1]

        params = []
        # Prepare parameter tuples
        for f in pdf_file_list:

            guessed_type = mime.from_file(f)
            if guessed_type != 'application/pdf':
                logging.error("Mime type doesn't match it's extension: type: %s, file %s, aborting" %\
                    (guessed_type,f))

            else:
                 params.append((f,density,percent_reduction))

        # Runs N concurrent processes based on config.
        m = MultiprocessMgmt(convert_list,params,max_processes)
        m.run()