Ejemplo n.º 1
0
    def post_processing(self):
        cw = self.customWidget
        ui_setting = self.ui_setting
        format = self._format
        if cw is not None and format is not None:
            try:
                dither = ui_setting.checkDither.isChecked()
                quality = ui_setting.ugoira_quality.value()
            except Exception as e:
                print(e)
                dither = True
                quality = 90

            imgs_ugoira = []
            for img in self.imgs:
                if img.url not in cw.urls:
                    continue
                if img.type == 'ugoira':
                    if os.path.splitext(img.url)[1].lower() == '.zip':
                        imgs_ugoira.append(img)

            for j, img in enumerate(imgs_ugoira):
                if not cw.valid or not cw.alive:
                    return
                self.exec_queue.put(
                    (cw,
                     (u'customWidget.pbar.setFormat(u"[%v/%m]  {} [{}/{}]")'
                      ).format(tr_(u'움짤 변환...'), j, len(imgs_ugoira))))
                filename = os.path.join(self.dir, img.filename)
                out = os.path.splitext(filename)[0] + '.' + format
                cw.print_((u'convert ugoira: {} --> {}').format(filename, out))
                try:
                    duration = [
                        frame.delay for frame in img.ugoira_data.frames
                    ]
                    self.print_((u'Duration: {}').format(duration))
                    ffmpeg.gif(filename,
                               out,
                               duration=duration,
                               dither=dither,
                               quality=quality,
                               cw=cw)
                except Exception as e:
                    self.print_(print_error(e)[0])
                    continue
                if not cw.valid or not cw.alive:
                    return
                try:
                    self.removeDirList.append((filename, False))
                    cw.dones.add(out)
                    i = cw.urls.index(img.url)
                    cw.imgs[i] = out
                    if i == 0:
                        cw.firstImg = out
                        cw.setIcon(out)
                except Exception as e:
                    return self.Invalid(e=e)

            self.exec_queue.put(
                (cw, u'customWidget.pbar.setFormat("[%v/%m]")'))
 def pp(self, filename):
     if self.ugoira and self.ugoira['ext'] and not self.local:
         if utils.ui_setting:
             dither = utils.ui_setting.checkDither.isChecked()
             quality = utils.ui_setting.ugoira_quality.value()
         else:
             dither = True
             quality = 90
         filename_new = '{}{}'.format(os.path.splitext(filename)[0], self.ugoira['ext'])
         ffmpeg.gif(filename, filename_new, self.ugoira['delay'], dither=dither, quality=quality, cw=self.cw)
         utils.removeDirList.append((filename, False))
         return filename_new