예제 #1
0
def main():
	image = Image.open(path)
	max_colors = 10
	#if "mode" in sys.argv:
	results = most_frequent_color(image, colors=max_colors)

	#result2 = average_colour(image)
	for i in range(0, max_colors):
		save(path, i+1, color=results[i][1])
예제 #2
0
def main():
    image = Image.open(path)
    max_colors = 10
    #if "mode" in sys.argv:
    results = most_frequent_color(image, colors=max_colors)

    #result2 = average_colour(image)
    for i in range(0, max_colors):
        save(path, i + 1, color=results[i][1])
예제 #3
0
    def do_GET(self):
        parts = self.path.split("?", 1)  #py3: self.path.split("?", maxsplit=1)
        self.path = parts[0]
        if len(parts) > 1:
            self.query = parts[1]
        else:
            self.query = None
        logger.debug("Hit {url}".format(url=self.path))
        if self.path == "/":
            msg = """<html><head>    <title>OMG PONIES!</title>    </head><body>
			<h1>YO!</h1>
			<a href="info.html">Ajax Interface</a><br />
			<a href="info_noscript.html">No-Script Interface</a><br />
			</body></html>"""
            self.do_write_text(msg)
            return
        elif self.path.endswith("/cover.img.json"):
            msg = json_dump(self.info.songcoverart.as_dict(base64=True))
            self.do_write_text(msg)
            return
        elif self.path.endswith("/cover.color.json"):

            def rgb_to_array(r, g, b):
                return {"r": r, "g": g, "b": b}

            def color_result_to_array(img):
                return rgb_to_array(color[1][0], color[1][1], color[1][2])

            if not self.info.songcoverart.binary:
                meta_dict = {
                    "colors": [
                        rgb_to_array(0, 0, 0),
                        rgb_to_array(255, 255, 255),
                        rgb_to_array(255, 255, 255)
                    ]
                }
            else:
                img = Image.open(BytesIO(self.info.songcoverart.binary))
                colors = most_frequent_color(img, colors=3)
                meta_dict = {
                    "colors":
                    list([color_result_to_array(color) for color in colors])
                }
            msg = json_dump(meta_dict)
            self.do_write_text(msg)
            return
        elif self.path.endswith("/cover.json"):
            msg = json_dump(self.info.songcoverart.as_dict())
            self.do_write_text(msg)
            return

        elif self.path.endswith("/cover.png"):
            cover = self.info.songcoverart
            if cover:
                if cover.mime == "image/jpeg":
                    self.send_response(307)
                    self.send_header("Location", "cover.jpg")
                    self.end_headers()
                    return
                return self.do_write_text(cover.binary,
                                          content_type=cover.mime,
                                          is_binary=True)
            return self.do_write_default_cover_png()

        elif self.path.endswith("/cover.jpg") or self.path.endswith(
                "/cover.jpe") or self.path.endswith("/cover.jpeg"):
            cover = self.info.songcoverart
            if not cover or cover.mime == "image/png":
                self.send_response(307)
                self.send_header("Location", "cover.png")
                self.end_headers()
                return
            return self.do_write_text(cover.binary,
                                      content_type=cover.mime,
                                      is_binary=True)

        elif self.path.endswith("/cover.img"):
            cover = self.info.songcoverart
            if cover:
                return self.do_write_text(cover.binary,
                                          content_type=cover.mime,
                                          is_binary=True)
            self.do_write_default_cover_png()
            return
        elif self.path.endswith("/volume.json"):
            msg = json_dump({
                "info": "volume",
                "software": self.info.volume,
                "airplay": self.info.airplayvolume
            })
            self.do_write_text(msg)
        elif self.path.endswith("/meta.json"):
            skiplist = ["songcoverart"]
            meta_dict = {}
            for key, value in self.info.__dict__.items(
            ):  # this eats memory on python 2
                if key in skiplist:
                    continue
                if isinstance(value, datetime):
                    meta_dict[key] = str(value.isoformat())
                else:
                    meta_dict[key] = value
            msg = json_dump(meta_dict)
            self.do_write_text(msg)
            return
        elif self.path.endswith("/text"):
            assert isinstance(self.info, Infos)
            msg = self.info.to_simple_string()
            self.do_write_text(msg)
            return
        elif self.path.endswith("/debug_breakpoint"):
            self.do_write_text(
                "This is a debug line with an breakpoint added in PyCharm.")
            return
        else:
            self.path = folder + self.path  #  e.g. localhost/123/foo.bar -> /path/to/script/webserver_files/123/foo.bar
            logger.debug("Requested file {file}".format(file=self.path))
            f = self.send_head()  # this handles 404'ing for us
            if f:
                try:
                    self.copyfile(f, self.wfile)
                finally:
                    f.close()
예제 #4
0
	def do_GET(self):
		parts = self.path.split("?", 1) #py3: self.path.split("?", maxsplit=1)
		self.path = parts[0]
		if len(parts)>1:
			self.query = parts[1]
		else:
			self.query = None
		logger.debug("Hit {url}".format(url=self.path))
		if self.path == "/":
			msg = """<html><head>    <title>OMG PONIES!</title>    </head><body>
			<h1>YO!</h1>
			<a href="info.html">Ajax Interface</a><br />
			<a href="info_noscript.html">No-Script Interface</a><br />
			</body></html>"""
			self.do_write_text(msg)
			return
		elif self.path.endswith("/cover.img.json"):
			msg = json_dump(self.info.songcoverart.as_dict(base64=True))
			self.do_write_text(msg)
			return
		elif self.path.endswith("/cover.color.json"):
			def rgb_to_array(r, g, b):
				return {"r": r, "g": g, "b": b}
			def color_result_to_array(img):
				return rgb_to_array(color[1][0],color[1][1],color[1][2])
			if not self.info.songcoverart.binary:
				meta_dict = {"colors": [rgb_to_array(0,0,0),rgb_to_array(255,255,255), rgb_to_array(255,255,255)]}
			else:
				img = Image.open(BytesIO(self.info.songcoverart.binary))
				colors = most_frequent_color(img, colors=3)
				meta_dict = {"colors": list([color_result_to_array(color) for color in colors])}
			msg = json_dump(meta_dict)
			self.do_write_text(msg)
			return
		elif self.path.endswith("/cover.json"):
			msg = json_dump(self.info.songcoverart.as_dict())
			self.do_write_text(msg)
			return

		elif self.path.endswith("/cover.png"):
			cover = self.info.songcoverart
			if cover:
				if cover.mime == "image/jpeg":
					self.send_response(307)
					self.send_header("Location", "cover.jpg")
					self.end_headers()
					return
				return self.do_write_text(cover.binary, content_type=cover.mime, is_binary=True)
			return self.do_write_default_cover_png()

		elif self.path.endswith("/cover.jpg") or self.path.endswith("/cover.jpe") or self.path.endswith("/cover.jpeg"):
			cover = self.info.songcoverart
			if not cover or cover.mime == "image/png":
				self.send_response(307)
				self.send_header("Location", "cover.png")
				self.end_headers()
				return
			return self.do_write_text(cover.binary, content_type=cover.mime, is_binary=True)

		elif self.path.endswith("/cover.img"):
			cover = self.info.songcoverart
			if cover:
				return self.do_write_text(cover.binary, content_type=cover.mime, is_binary=True)
			self.do_write_default_cover_png()
			return
		elif self.path.endswith("/volume.json"):
			msg = json_dump({"info": "volume", "software": self.info.volume, "airplay": self.info.airplayvolume})
			self.do_write_text(msg)
		elif self.path.endswith("/meta.json"):
			skiplist = ["songcoverart"]
			meta_dict = {}
			for key, value in self.info.__dict__.items():  # this eats memory on python 2
				if key in skiplist:
					continue
				if isinstance(value, datetime):
					meta_dict[key] = str(value.isoformat())
				else:
					meta_dict[key] = value
			msg = json_dump(meta_dict)
			self.do_write_text(msg)
			return
		elif self.path.endswith("/text"):
			assert isinstance(self.info, Infos)
			msg = self.info.to_simple_string()
			self.do_write_text(msg)
			return
		elif self.path.endswith("/debug_breakpoint"):
			self.do_write_text("This is a debug line with an breakpoint added in PyCharm.")
			return
		else:
			self.path = folder + self.path  #  e.g. localhost/123/foo.bar -> /path/to/script/webserver_files/123/foo.bar
			logger.debug("Requested file {file}".format(file = self.path))
			f = self.send_head()  # this handles 404'ing for us
			if f:
				try:
					self.copyfile(f, self.wfile)
				finally:
					f.close()