Example #1
0
    def __init__(self, lang, areaType, statusBar):
        QtGui.QGraphicsView.__init__(self)

        self.ocrscene = OcrScene(self, lang, areaType)
        self.setScene(self.ocrscene)

        self.setCacheMode(QtGui.QGraphicsView.CacheBackground)
        self.setRenderHint(QtGui.QPainter.Antialiasing)
        self.setTransformationAnchor(QtGui.QGraphicsView.AnchorUnderMouse)
        self.setResizeAnchor(QtGui.QGraphicsView.AnchorViewCenter)

        self.setMinimumSize(200, 200)

        self.language = lang
        self.statusBar = statusBar
        self.areaType = areaType

        self.resizingArea = None
        self.resizingAreaPos = None
        self.resizingAreaRect = None
        self.resizingEdge = None
        self.resizingStartingPos = None
        self.areaBorder = float()
        self.areaTextSize = float()

        self.setCursor(QtCore.Qt.CrossCursor)
        self.scene().isModified = False
        self.bResizing = False
        Image.init()
Example #2
0
def save(filename, im, options, destination=None):
    pil_options = options.copy()
    if destination is None:
        destination = BytesIO()
    # Ensure plugins are fully loaded so that Image.EXTENSION is populated.
    Image.init()
    fmt = Image.EXTENSION.get(
        os.path.splitext(filename)[1].lower(), 'JPEG')
    if fmt in ('JPEG', 'WEBP'):
        pil_options.setdefault('quality', 85)
    saved = False
    if fmt == 'JPEG':
        progressive = pil_options.pop('progressive', 100)
        if progressive:
            if progressive is True or max(im.size) >= int(progressive):
                pil_options['progressive'] = True
        try:
            im.save(destination, format=fmt, optimize=1, **pil_options)
            saved = True
        except IOError:
            # Try again, without optimization (PIL can't optimize an image
            # larger than ImageFile.MAXBLOCK, which is 64k by default).
            # This shouldn't be triggered very often these days, as recent
            # versions of pillow avoid the MAXBLOCK limitation.
            pass
    if not saved:
        im.save(destination, format=fmt, **pil_options)
    if hasattr(destination, 'seek'):
        destination.seek(0)
    return destination
Example #3
0
 def _create(self, name=None, **options):
     '''
     Recreate image. Does not check whether the image already exists.
     '''
     if self.query:
         if name is None:
             name = self._path()
         name = smart_unicode(name)
         image = self._create_raw(allow_reopen=False)
         format = self.query.format()
         if image.format:
             format = image.format
         elif not format:
             format = self.image.format
         if not format:
             if not Image.EXTENSION:
                 Image.init()
             format = Image.EXTENSION[os.path.splitext(name)[1]]
         if not self.cache_storage.exists(name):
             self.cache_storage.save(name, ContentFile(''))
         if DEFAULT_OPTIONS:
             save_options = DEFAULT_OPTIONS.copy()
         else:
             save_options = {}
         save_options.update(options)
         # options may raise errors
         # TODO: Check this
         image = self._convert_image_mode(image, format)
         try:
             image.save(self.cache_storage.open(name, 'wb'), format, **save_options)
         except TypeError:
             image.save(self.cache_storage.open(name, 'wb'), format)
Example #4
0
 def testRegFullData(self):
     Image.init()        
     f = open("communicator/test/data/image.jpg")
     data = {
             "username": "******", 
             "email": "*****@*****.**",
             "password1": "123", 
             "password2": "123",
             "type": "P", 
             "age": "20",
             "sex": "M",
             "Location": "Seoul",
             "profile_image": f 
     }
     
     response = self.client.post("/register/", data)
     self.assertEquals(response.status_code, 302)        
     user = User.objects.get(username="******")
     user_profile = user.get_profile()
     
     f = open("communicator/test/data/image.jpg")
     self.assertEqual(user_profile.profile_image.file.read(), f.read())
     self.assertEquals(user_profile, UserProfile.objects.get(user=user))        
     self.assertEquals(user_profile.max_succesive_hits, 0)
     self.assertEquals(user_profile.fair_point, 500)
     self.assertEquals(user_profile.average_uptained_point, 0)
     
     user.delete()
     self.assertRaises(ObjectDoesNotExist, UserProfile.objects.get, user = user)
Example #5
0
def get_supported_image_mime_types():
    """ Queries PIL for *all* locally supported mime types.

    Adapted from:
    https://github.com/python-pillow/Pillow/issues/1182#issuecomment-90572583

    """

    # Make sure all supported formats are registered.
    Image.init()

    # Not all PIL formats register a mime type, fill in the blanks ourselves.
    supported_types = {
        'image/bmp',
        'image/x-bmp',
        'image/x-MS-bmp',
        'image/x-icon',
        'image/x-ico',
        'image/x-win-bitmap',
        'image/x-pcx',
        'image/x-portable-pixmap',
        'image/x-tga'
    }

    for mime in Image.MIME.values():

        # exclude pdfs, postscripts and the like
        if not mime.startswith('application/'):
            supported_types.add(mime)

    return supported_types
Example #6
0
def save_image(image, destination=None, filename=None, **options):
    """
    Save a PIL image.
    """
    if destination is None:
        destination = BytesIO()
    filename = filename or ''
    # Ensure plugins are fully loaded so that Image.EXTENSION is populated.
    Image.init()
    format = Image.EXTENSION.get(os.path.splitext(filename)[1].lower(), 'JPEG')
    if format in ('JPEG', 'WEBP'):
        options.setdefault('quality', 85)
    saved = False
    if format == 'JPEG':
        if settings.THUMBNAIL_PROGRESSIVE and (
                max(image.size) >= settings.THUMBNAIL_PROGRESSIVE):
            options['progressive'] = True
        try:
            image.save(destination, format=format, optimize=1, **options)
            saved = True
        except IOError:
            # Try again, without optimization (PIL can't optimize an image
            # larger than ImageFile.MAXBLOCK, which is 64k by default). This
            # shouldn't be triggered very often these days, as recent versions
            # of pillow avoid the MAXBLOCK limitation.
            pass
    if not saved:
        image.save(destination, format=format, **options)
    if hasattr(destination, 'seek'):
        destination.seek(0)
    return destination
Example #7
0
 def setUp(self):
     self.client = Client()
     self.testdatapath = os.path.join(os.path.dirname(__file__), "testdata")
     self.user = User.objects.create_user("test", "*****@*****.**", "testpassword")
     self.user.save()
     self.client.login(username="******", password="******")
     Image.init()
Example #8
0
 def setUp(self):
     self.testdatapath = os.path.join(os.path.dirname(__file__), "data")
     self.user = get_user_model().objects.create_user('test', '*****@*****.**', 'testpassword')
     self.user.save()
     self.client.login(username='******', password='******')
     self.site = AdminSite()
     Image.init()
Example #9
0
  def __init__(self, service_name='images'):
    """Preloads PIL to load all modules in the unhardened environment.

    Args:
      service_name: Service name expected for all calls.
    """
    super(ImagesServiceStub, self).__init__(service_name)
    Image.init()
Example #10
0
 def mimetype(self):
     format = self.raw().format
     try:
         if not Image.MIME:
             Image.init()
         return Image.MIME[format]
     except KeyError:
         return None
Example #11
0
def get_available_image_extensions():
    try:
        from PIL import Image
    except ImportError:
        return []
    else:
        Image.init()
        return [ext.lower()[1:] for ext in Image.EXTENSION.keys()]
Example #12
0
def plot_twittergraph(request):
    imagePath=constants.twittergraphfile
    from PIL import Image
    Image.init()
    i=Image.open(imagePath)

    response=HttpResponse(mimetype='image/png')
    i.save(response,'PNG')
    return response
Example #13
0
def showStaticImage(request):
    #""" Simply return a static image as a png """
    imagePath = "plotResults.png"
    from PIL import Image
    Image.init()
    i = Image.open(imagePath)
    response = HttpResponse(mimetype='image/png')
    i.save(response,'PNG')
    return response
Example #14
0
 def image_format(self, value):
     value = value.upper()
     if not Image.EXTENSION:
         Image.init()
     if not value in Image.EXTENSION.values():
         raise RuntimeError('invalid format')
     q = self._clone()
     q = q._append(None)
     q.query.format(value)
     return q
Example #15
0
  def __init__(self, service_name="images", host_prefix=""):
    """Preloads PIL to load all modules in the unhardened environment.

    Args:
      service_name: Service name expected for all calls.
      host_prefix: the URL prefix (protocol://host:port) to preprend to
        image urls on a call to GetUrlBase.
    """
    super(ImagesServiceStub, self).__init__(service_name)
    self._host_prefix = host_prefix
    Image.init()
Example #16
0
def showImage(request):
    
    imagePath = "/Users/rik/Code/eclipse/djOakData/showCrime/tstImage.png"
    from PIL import Image
    Image.init()
    i = Image.open(imagePath)
    
    response = HttpResponse(mimetype='image/png')
    
    i.save(response,'png')
    return response
Example #17
0
  def __init__(self, service_name="images", host_prefix=""):
    """Preloads PIL to load all modules in the unhardened environment.

    Args:
      service_name: Service name expected for all calls.
      host_prefix: the URL prefix (protocol://host:port) to preprend to
        image urls on a call to GetUrlBase.
    """
    super(ImagesServiceStub, self).__init__(service_name,
                                            max_request_size=MAX_REQUEST_SIZE)
    self._blob_stub = images_blob_stub.ImagesBlobStub(host_prefix)
    Image.init()
Example #18
0
	def save_png_with_metadata( self, file_we, metadata ):
		if self.verbose:
			print '\tWrite metadata in the PNG...\t',
			sys.stdout.flush()

		Image.init()
		im = Image.open( file_we+'.png' )
		im.info = metadata
		#print im.info
		self.pngsave( im, file_we+'.png' )
		if self.verbose:
			print '\tok'
Example #19
0
    def setUp(self):
        self.testdatapath = os.path.join(os.path.dirname(__file__), "testdata")
        self.user = User.objects.create_user('*****@*****.**', 'testpassword', is_active=True)

        response = self.client.post('/accounts/login/', {
            'username': '******',
            'password': '******',
            }, 
        )
        self.assertEquals(response.status_code, 302)
        self.assert_(response['Location'].endswith(settings.LOGIN_REDIRECT_URL))        
        
        Image.init()
Example #20
0
def upload_image(request, topic_id):
    """Handles and validates uploaded image; both 100x100 and 25x25 image are saved"""
    from PIL import Image #@UnresolvedImport
    #For handling weired bug of PIL Linux package that only identifies BMP image;
    # See http://www.chipx86.com/blog/2008/07/25/django-tips-pil-imagefield-and-unit-tests/
    Image.init()
    
    image_form = ImageForm(request.POST, request.FILES)
    if image_form.is_valid():
        image = image_form.cleaned_data['image']
        image_size = image.size
        if image_size > 2048 * 1024: #size in bytes
            messages.error(request, '上传的图片请勿超过2M')
            return redirect("main.views.topic.topic", topic_id)
        
        dot_index = image.name.rfind('.')
        if dot_index == -1 or image.name[dot_index:] not in ['.png', '.gif', '.jpeg', '.jpg', '.PNG', '.GIF', '.JPEG', '.JPG']:
            messages.error(request, '上传的图片类型只能是png,gif或jpeg')
            return redirect("main.views.topic.topic", topic_id)
        
        image_extension = image.name[dot_index:]
        
        image.name = generate_random_file_name(32) + image_extension  #TODO:Need to query to prevent name collision
        #It's more secure to try: open than os.path.exists()
        #http://stackoverflow.com/questions/82831/how-do-i-check-if-a-file-exists-using-python
        while True:
            try:
                open(settings.MEDIA_ROOT + '/topic/' + image.name)
                image.name = generate_random_file_name(32) + image_extension
            except:
                break
          
        #make a 10x10 thumbnail
        import copy
        image_small = copy.copy(image)
        image_small.name = generate_random_file_name(32) + image_extension
        while True:
            try:
                open(settings.MEDIA_ROOT + '/topic/' + image_small.name)
                image_small.name = generate_random_file_name(32) + image_extension
            except:
                break 
        
        topic = Topic.objects.get(pk=topic_id)
        topic.image = image
        topic.image_small = image_small
        topic.save()
        return redirect("main.views.topic.topic", topic_id)
    else:
        messages.error(request, '你上传的文件不是图片')
        return redirect("main.views.topic.topic", topic_id)
Example #21
0
def get_format(file_path):
    """ This gets a PIL image format string from a file name
        This should be exposed from PIL but isn't so i've copied PIL code here
    """
    ext = os.path.splitext(file_path)[1].lower()
    try:
        fmt = Image.EXTENSION[ext]
    except KeyError:
        Image.init()
        try:
            fmt = Image.EXTENSION[ext]
        except KeyError:
            return "JPEG"  # if we don't recognize the format, assume JPEG
    return fmt
Example #22
0
 def _format_extension(self, format):
     try:
         return self._reverse_extensions.get(format, '')
     except AttributeError:
         if not Image.EXTENSION:
             Image.init()
         self._reverse_extensions = {}
         for ext, _format in Image.EXTENSION.iteritems():
             self._reverse_extensions[_format] = ext
         # some defaults for formats with multiple extensions
         self._reverse_extensions.update({
             'JPEG': '.jpg',
             'MPEG': '.mpeg',
             'TIFF': '.tiff',
         })
         return self._reverse_extensions.get(format, '')
Example #23
0
 def extension(self):
     ext = os.path.splitext(self.cached_name)[1].lower()
     
     try:
         fmt = PilImage.EXTENSION[ext]
     except KeyError:
         PilImage.init()
         try:
             fmt = PilImage.EXTENSION[ext]
         except KeyError:
             fmt = "JPEG"
             #raise KeyError(ext) # unknown extension
     if not fmt:
         fmt = "JPEG"
         
     print(fmt)
     return fmt    
Example #24
0
def install_Image(lis):
    # `import Image` only works if the file `PIL.pth` exists in
    # site-packages. This is not always the case.
    try:
        from PIL import Image
    except:
        # just a backup
        import Image
    # PIL uses lazy initialization.
    # you candecide if you want only the
    # default stuff:
    Image.preinit()
    # or just everything:
    Image.init()
    import sys
    for name in sys.modules:
        if name[-11:] == "ImagePlugin":
            lis.append(name)
Example #25
0
 def testBasicUpload(self):
     user_data = {
             "username":"******", 
             "email": "*****@*****.**",
             "password1": "123",
             "password2": "123",
             "type": "P",
             }    
     
     response = self.client.post("/register/", user_data)
     self.assertEquals(response.status_code, 302)        
     user = User.objects.get(username="******")
     user_profile = user.get_profile()
     self.assertEquals(user_profile, UserProfile.objects.get(user=user))
     
     self.assertEquals(user_profile.max_succesive_hits, 0)
     self.assertEquals(user_profile.fair_point, 500)
     self.assertEquals(user_profile.average_uptained_point, 0)
     
     # login
     
     # then
     
     Image.init()        
     f = open("communicator/test/data/image.png")
     uploadData = {                
             "profile_image": f 
     }
             
     response = self.client.post("/upload/", uploadData)
     self.assertEquals(response.status_code, 302) 
     user = User.objects.get(username="******")
     user_profile = user.get_profile()
     
     f = open("communicator/test/data/image.png")
     self.assertEqual(user_profile.profile_image.file.read(), f.read())
     self.assertEquals(user_profile, UserProfile.objects.get(user=user))        
     self.assertEquals(user_profile.max_succesive_hits, 0)
     self.assertEquals(user_profile.fair_point, 500)
     self.assertEquals(user_profile.average_uptained_point, 0)
     
     user.delete()
     self.assertRaises(ObjectDoesNotExist, UserProfile.objects.get, user = user)
Example #26
0
def get_supported_formats():
    if USE_PIL:
        # Make sure all supported formats are registered.
        Image.init()
        # Not all PIL formats register a mime type,
        # fill in the blanks ourselves.
        supported_formats = {
            'BMP': (['image/bmp', 'image/x-bmp', 'image/x-MS-bmp'], []),
            'ICO': (['image/x-icon', 'image/x-ico', 'image/x-win-bitmap'], []),
            'PCX': (['image/x-pcx'], []),
            'PPM': (['image/x-portable-pixmap'], []),
            'TGA': (['image/x-tga'], []),
        }
        for name, mime in Image.MIME.items():
            mime_types, extensions = supported_formats.get(name, ([], []))
            supported_formats[name] = mime_types + [mime], extensions
        for ext, name in Image.EXTENSION.items():
            assert '.' == ext[0]
            mime_types, extensions = supported_formats.get(name, ([], []))
            supported_formats[name] = mime_types, extensions + [ext[1:]]
        # Remove formats with no mime type or extension.
        for name in supported_formats.keys():
            mime_types, extensions = supported_formats[name]
            if not mime_types or not extensions:
                del supported_formats[name]
        # Remove archives/videos formats.
        for name in (
            'MPEG',
            'PDF',
        ):
            if name in supported_formats:
                del supported_formats[name]
    else:
        supported_formats = {}
        for format in gtk.gdk.pixbuf_get_formats():
            name = format['name'].upper()
            assert name not in supported_formats
            supported_formats[name] = (
                format['mime_types'],
                format['extensions'],
            )
    return supported_formats
Example #27
0
    def _init_pillow(self):
        with self._lock:
            if not self._pillow_imported:
                self._pillow_imported = True  # more like tried to import
                import PIL
                if not hasattr(PIL, 'PILLOW_VERSION'):
                    raise ImportError('Imageio Pillow requires '
                                      'Pillow, not PIL!')
                from PIL import Image
                self._Image = Image
            elif self._Image is None:
                raise RuntimeError('Imageio Pillow plugin requires '
                                   'Pillow lib.')
            Image = self._Image

        if self.plugin_id in ('PNG', 'JPEG', 'BMP', 'GIF', 'PPM'):
            Image.preinit()
        else:
            Image.init()
        return Image
Example #28
0
def is_image(mimetype):
    Image.init()
    open_handlers = Image.OPEN.keys()
    extensions = []
    for key, value in Image.EXTENSION.items():
        if value in open_handlers:
            extensions.append(key.strip('.'))

    mr = getToolByName(api.portal.get(), 'mimetypes_registry')
    mimetypes = mr.lookup(mimetype)
    if not mimetypes:
        return False  # unknown mimetype

    mime_extensions = mimetypes[0].extensions
    for ext in mime_extensions:
        if ext in extensions:
            return True
    for glob in mr.lookup(mimetype)[0].globs:
        if glob.strip("*.") in extensions:
            return True
    return False
Example #29
0
	def base64(self, format='PNG'):
		'''
		usage:  i = Identicon('xx')
				print(i.base64())
		return: this image's base64 code
		created by: liuzheng712
		bug report: https://github.com/liuzheng712/identicons/issues
		'''
		self.calculate()
		fp = StringIO.StringIO()
		self.image.encoderinfo = {}
		self.image.encoderconfig = ()

		if format.upper() not in Image.SAVE:
			Image.init()
		save_handler = Image.SAVE[format.upper()]
		try:
			save_handler(self.image, fp, '')
		finally:
			fp.seek(0)
			return "data:image/png;base64,{0}".format(base64.b64encode(fp.read()))
Example #30
0
    def _init_pillow(self):
        with self._lock:
            if not self._pillow_imported:
                self._pillow_imported = True  # more like tried to import
                import PIL

                if not hasattr(PIL, "__version__"):  # pragma: no cover
                    raise ImportError(
                        "Imageio Pillow plugin requires " "Pillow, not PIL!"
                    )
                from PIL import Image

                self._Image = Image
            elif self._Image is None:  # pragma: no cover
                raise RuntimeError("Imageio Pillow plugin requires " "Pillow lib.")
            Image = self._Image

        if self.plugin_id in ("PNG", "JPEG", "BMP", "GIF", "PPM"):
            Image.preinit()
        else:
            Image.init()
        return Image
Example #31
0
def pil_init():
    Image.init()
Example #32
0
    print("  -P <printer>  same as -p but use given printer")
    sys.exit(1)

try:
    opt, argv = getopt.getopt(sys.argv[1:], "cdpP:")
except getopt.error as v:
    print(v)
    sys.exit(1)

printerArgs = []  # print to stdout
monochrome = 1    # reduce file size for most common case

for o, a in opt:
    if o == "-d":
        # debug: show available drivers
        Image.init()
        print(Image.ID)
        sys.exit(1)
    elif o == "-c":
        # colour printer
        monochrome = 0
    elif o == "-p":
        # default printer channel
        printerArgs = ["lpr"]
    elif o == "-P":
        # printer channel
        printerArgs = ["lpr", "-P%s" % a]

for filepath in argv:
    try:
Example #33
0
 def setUp(self):
     self.testdatapath = os.path.join(os.path.dirname(__file__), "data")
     self.user = get_user_model().objects.create_user('test', '*****@*****.**', 'testpassword')
     self.user.save()
     self.client.login(username='******', password='******')
     Image.init()
Example #34
0
    def __init__(self, instance_id: InstanceID = None):
        """
        Initialization.
        """
        super().__init__(instance_id)

        # Check PIL support for WebP
        Image.init()
        if 'WEBP' not in Image.ID:
            raise EFBException(
                self._(
                    "WebP support of Pillow is required.\n"
                    "Please refer to Pillow Documentation for instructions.\n"
                    "https://pillow.readthedocs.io/"))

        # Suppress debug logs from dependencies
        logging.getLogger('requests').setLevel(logging.CRITICAL)
        logging.getLogger('urllib3').setLevel(logging.CRITICAL)
        logging.getLogger('telegram.bot').setLevel(logging.CRITICAL)
        logging.getLogger(
            'telegram.vendor.ptb_urllib3.urllib3.connectionpool').setLevel(
                logging.CRITICAL)

        # Set up logger
        self.logger: logging.Logger = logging.getLogger(__name__)

        # Load configs
        self.load_config()

        # Load predefined MIME types
        mimetypes.init(files=["mimetypes"])

        # Initialize managers
        self.flag: ExperimentalFlagsManager = ExperimentalFlagsManager(self)
        self.db: DatabaseManager = DatabaseManager(self)
        self.chat_dest_cache: ChatDestinationCache = ChatDestinationCache(
            self.flag("send_to_last_chat"))
        self.bot_manager: TelegramBotManager = TelegramBotManager(self)
        self.chat_binding: ChatBindingManager = ChatBindingManager(self)
        self.commands: CommandsManager = CommandsManager(self)
        self.master_messages: MasterMessageProcessor = MasterMessageProcessor(
            self)
        self.slave_messages: SlaveMessageProcessor = SlaveMessageProcessor(
            self)

        if not self.flag('auto_locale'):
            self.translator = translation("efb_telegram_master",
                                          resource_filename(
                                              'efb_telegram_master', 'locale'),
                                          fallback=True)

        # Basic message handlers
        non_edit_filter = Filters.update.message | Filters.update.channel_post
        self.bot_manager.dispatcher.add_handler(
            CommandHandler("start", self.start, filters=non_edit_filter))
        self.bot_manager.dispatcher.add_handler(
            CommandHandler("help", self.help, filters=non_edit_filter))
        self.bot_manager.dispatcher.add_handler(
            CommandHandler("info", self.info, filters=non_edit_filter))
        self.bot_manager.dispatcher.add_handler(
            CallbackQueryHandler(self.void_callback_handler, pattern="void"))
        self.bot_manager.dispatcher.add_handler(
            CallbackQueryHandler(self.bot_manager.session_expired))
        self.bot_manager.dispatcher.add_handler(
            CommandHandler("react", self.react, filters=non_edit_filter))

        self.bot_manager.dispatcher.add_error_handler(self.error)

        self.rpc_utilities = RPCUtilities(self)