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])
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])
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()
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()