Example #1
0
    def __init__(self, source_file, name_hint=""):
        # we will retain the original file object if AND ONLY IF it is directly readable by PIL,
        # so that it can be returned as-is for use as the original rendition in the case of web-usable formats
        self.file = None

        opened_with_pil = False
        try:
            self.image = Image.open(
                source_file)  # raises IOError if image can't be identified
            opened_with_pil = True
            self.file = source_file
        except IOError:
            basename, ext = os.path.splitext(os.path.basename(name_hint))
            if ext and ext[1:].lower() in ANSILOVE_C_READABLE_FORMATS:
                # write source file contents to a temporary file
                fd, input_path = tempfile.mkstemp(prefix=basename, suffix=ext)
                f = os.fdopen(fd, 'wb')
                source_file.seek(0)
                f.write(source_file.read())
                f.close()

                # run file through ansilove
                output_path = input_path + '.png'
                subprocess.check_call(
                    [ANSILOVE_C_PATH, input_path, '-o', output_path])

                # open result with PIL
                try:
                    self.image = Image.open(output_path)
                except IOError:
                    # On Linux (or just on the live server or something), ansilove adds a
                    # redundant .png to the output filename. LULZ.
                    output_path += '.png'
                    self.image = Image.open(output_path)
                self.image.load(
                )  # load pixel data and close file so we can delete it

                # delete input and output files
                os.remove(input_path)
                os.remove(output_path)

            else:
                # try pyrecoil
                try:
                    source_file.seek(0)
                    img = RecoilImage(name_hint, source_file)
                    self.image = img.to_pil()
                except ValueError:
                    raise IOError("Image format is not supported")

        if opened_with_pil and self.image.format not in PIL_READABLE_FORMATS:
            raise IOError("Image format is not supported")
Example #2
0
	def __init__(self, source_file, name_hint=""):
		# we will retain the original file object if AND ONLY IF it is directly readable by PIL,
		# so that it can be returned as-is for use as the original rendition in the case of web-usable formats
		self.file = None

		opened_with_pil = False
		try:
			self.image = Image.open(source_file)  # raises IOError if image can't be identified
			opened_with_pil = True
			self.file = source_file
		except IOError:
			basename, ext = os.path.splitext(os.path.basename(name_hint))
			if ext and ext[1:].lower() in ANSILOVE_C_READABLE_FORMATS:
				# write source file contents to a temporary file
				fd, input_path = tempfile.mkstemp(prefix=basename, suffix=ext)
				f = os.fdopen(fd, 'wb')
				source_file.seek(0)
				f.write(source_file.read())
				f.close()

				# run file through ansilove
				output_path = input_path + '.png'
				subprocess.check_call([ANSILOVE_C_PATH, input_path, '-o', output_path])

				# open result with PIL
				try:
					self.image = Image.open(output_path)
				except IOError:
					# On Linux (or just on the live server or something), ansilove adds a
					# redundant .png to the output filename. LULZ.
					output_path += '.png'
					self.image = Image.open(output_path)
				self.image.load()  # load pixel data and close file so we can delete it

				# delete input and output files
				os.remove(input_path)
				os.remove(output_path)

			else:
				# try pyrecoil
				try:
					source_file.seek(0)
					img = RecoilImage(name_hint, source_file)
					self.image = img.to_pil()
				except ValueError:
					raise IOError("Image format is not supported")

		if opened_with_pil and self.image.format not in PIL_READABLE_FORMATS:
			raise IOError("Image format is not supported")
Example #3
0
	def __init__(self, source_file, name_hint=""):
		self.file = source_file

		opened_with_pil = False
		try:
			self.image = Image.open(source_file)  # raises IOError if image can't be identified
			opened_with_pil = True
		except IOError:
			# try pyrecoil
			try:
				source_file.seek(0)
				img = RecoilImage(name_hint, source_file)
				self.image = img.to_pil()
			except ValueError:
				raise IOError("Image format is not supported")

		if opened_with_pil and self.image.format not in PIL_READABLE_FORMATS:
			raise IOError("Image format is not supported")
Example #4
0
    def __init__(self, source_file, name_hint=""):
        # we will retain the original file object if AND ONLY IF it is directly readable by PIL,
        # so that it can be returned as-is for use as the original rendition in the case of web-usable formats
        self.file = None

        opened_with_pil = False
        try:
            self.image = Image.open(source_file)  # raises IOError if image can't be identified
            opened_with_pil = True
            self.file = source_file
        except IOError:
            # try pyrecoil
            try:
                source_file.seek(0)
                img = RecoilImage(name_hint, source_file)
                self.image = img.to_pil()
            except ValueError:
                raise IOError("Image format is not supported")

        if opened_with_pil and self.image.format not in PIL_READABLE_FORMATS:
            raise IOError("Image format is not supported")