def process_file(options, filename): print "Processing %s..." % (filename,) data = PixelData(io_data.read_pixels(filename, 'png')) base_filename = os.path.splitext(os.path.split(filename)[-1])[0] outdir = options.output_dir filetypes = [] if options.to_png: filetypes.append('PNG') if options.to_svg: filetypes.append('SVG') if options.write_pixels: for ft in filetypes: print " Writing pixels %s..." % (ft,) writer = io_data.get_writer(data, base_filename, ft.lower()) writer.export_pixels(outdir) data.depixel() if options.write_grid: for ft in filetypes: print " Writing grid %s..." % (ft,) writer = io_data.get_writer(data, base_filename, ft.lower()) writer.export_grid(outdir, options.draw_nodes) if options.write_shapes: for ft in filetypes: print " Writing shapes %s..." % (ft,) writer = io_data.get_writer(data, base_filename, ft.lower()) writer.export_shapes(outdir, options.draw_nodes)
def test_deform_grid(self): tg = nx.Graph() tg.add_nodes_from([ (0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (1.25, 1.25), (1.25, 1.75), (1.75, 1.25), (1.75, 2.25), (2, 0), (2, 1), (2, 3), (2.25, 1.75), (3, 0), (3, 1), (3, 2), (3, 3), (4, 0), (4, 1), (4, 2), (4, 3), ]) tg.add_edges_from([ ((0, 0), (0, 1)), ((0, 1), (0, 2)), ((0, 3), (0, 2)), ((1, 0), (0, 0)), ((1, 0), (1, 1)), ((1, 0), (2, 0)), ((1, 1), (0, 1)), ((1, 2), (0, 2)), ((1, 3), (0, 3)), ((1, 3), (1, 2)), ((1, 3), (2, 3)), ((1.25, 1.25), (1, 1)), ((1.25, 1.25), (1.75, 1.25)), ((1.25, 1.75), (1, 2)), ((1.25, 1.75), (1.25, 1.25)), ((1.25, 1.75), (1.75, 2.25)), ((2, 1), (1.75, 1.25)), ((2, 1), (2, 0)), ((2, 1), (3, 1)), ((2, 3), (1.75, 2.25)), ((2.25, 1.75), (1.75, 1.25)), ((2.25, 1.75), (1.75, 2.25)), ((2.25, 1.75), (3, 2)), ((3, 0), (2, 0)), ((3, 0), (3, 1)), ((3, 0), (4, 0)), ((3, 2), (3, 1)), ((3, 2), (4, 2)), ((3, 3), (2, 3)), ((3, 3), (3, 2)), ((3, 3), (4, 3)), ((4, 0), (4, 1)), ((4, 1), (3, 1)), ((4, 1), (4, 2)), ((4, 2), (4, 3)), ]) pd = PixelData(mkpixels(ISLAND)) pd.depixel() self.assertEqual(sorted(tg.nodes()), sorted(pd.grid_graph.nodes())) self.assertEqual(sort_edges(tg.edges()), sort_edges(pd.grid_graph.edges()))
def test_remove_diagonals(self): tg = nx.Graph() tg.add_nodes_from([ ((0, 0), {'value': 0, 'corners': set([(0, 0), (0, 1), (1, 0), (1, 1)])}), ((0, 1), {'value': 0, 'corners': set([(0, 1), (0, 2), (1, 1), (1, 2)])}), ((0, 2), {'value': 0, 'corners': set([(0, 2), (0, 3), (1, 2), (1, 3)])}), ((1, 0), {'value': 0, 'corners': set([(1, 0), (1, 1), (2, 0), (2, 1)])}), ((1, 1), {'value': 1, 'corners': set([(1, 1), (1, 2), (2, 1), (2, 2)])}), ((1, 2), {'value': 0, 'corners': set([(1, 2), (1, 3), (2, 2), (2, 3)])}), ((2, 0), {'value': 0, 'corners': set([(2, 0), (2, 1), (3, 0), (3, 1)])}), ((2, 1), {'value': 0, 'corners': set([(2, 1), (2, 2), (3, 1), (3, 2)])}), ((2, 2), {'value': 1, 'corners': set([(2, 2), (2, 3), (3, 2), (3, 3)])}), ((3, 0), {'value': 0, 'corners': set([(3, 0), (3, 1), (4, 0), (4, 1)])}), ((3, 1), {'value': 0, 'corners': set([(3, 1), (3, 2), (4, 1), (4, 2)])}), ((3, 2), {'value': 1, 'corners': set([(3, 2), (3, 3), (4, 2), (4, 3)])}), ]) tg.add_edges_from([ ((0, 0), (1, 0), {'diagonal': False}), ((0, 1), (0, 0), {'diagonal': False}), ((0, 1), (0, 2), {'diagonal': False}), ((0, 1), (1, 0), {'diagonal': True}), ((0, 1), (1, 2), {'diagonal': True}), ((1, 1), (2, 2), {'diagonal': True}), ((1, 2), (0, 2), {'diagonal': False}), # ((1, 2), (2, 1), {'diagonal': True}), ((2, 0), (1, 0), {'diagonal': False}), ((2, 1), (1, 0), {'diagonal': True}), ((2, 1), (2, 0), {'diagonal': False}), ((3, 0), (2, 0), {'diagonal': False}), # ((3, 0), (2, 1), {'diagonal': True}), ((3, 0), (3, 1), {'diagonal': False}), # ((3, 1), (2, 0), {'diagonal': True}), ((3, 1), (2, 1), {'diagonal': False}), ((3, 2), (2, 2), {'diagonal': False}), ]) pd = PixelData(mkpixels(ISLAND)) pd.make_pixel_graph() pd.remove_diagonals() self.assertEqual(sorted(tg.nodes(data=True)), sorted(pd.pixel_graph.nodes(data=True))) self.assertEqual(sort_edges(tg.edges(data=True)), sort_edges(pd.pixel_graph.edges(data=True)))
def test_size(self): pd = PixelData([[1, 1], [1, 1], [1, 1]]) self.assertEqual((2, 3), pd.size) self.assertEqual((pd.size_x, pd.size_y), pd.size) pd = PixelData([[1, 1, 1], [1, 1, 1]]) self.assertEqual((3, 2), pd.size) self.assertEqual((pd.size_x, pd.size_y), pd.size) pd = PixelData(mkpixels(EAR)) self.assertEqual((6, 7), pd.size) self.assertEqual((pd.size_x, pd.size_y), pd.size)
def test_pixel_graph(self): tg = nx.Graph() tg.add_nodes_from( [ ((0, 0), {"value": 1, "corners": set([(0, 0), (0, 1), (1, 0), (1, 1)])}), ((0, 1), {"value": 1, "corners": set([(0, 1), (0, 2), (1, 1), (1, 2)])}), ((0, 2), {"value": 1, "corners": set([(0, 2), (0, 3), (1, 2), (1, 3)])}), ((1, 0), {"value": 1, "corners": set([(1, 0), (1, 1), (2, 0), (2, 1)])}), ((1, 1), {"value": 0, "corners": set([(1, 1), (1, 2), (2, 1), (2, 2)])}), ((1, 2), {"value": 1, "corners": set([(1, 2), (1, 3), (2, 2), (2, 3)])}), ((2, 0), {"value": 1, "corners": set([(2, 0), (2, 1), (3, 0), (3, 1)])}), ((2, 1), {"value": 1, "corners": set([(2, 1), (2, 2), (3, 1), (3, 2)])}), ((2, 2), {"value": 0, "corners": set([(2, 2), (2, 3), (3, 2), (3, 3)])}), ((3, 0), {"value": 1, "corners": set([(3, 0), (3, 1), (4, 0), (4, 1)])}), ((3, 1), {"value": 1, "corners": set([(3, 1), (3, 2), (4, 1), (4, 2)])}), ((3, 2), {"value": 0, "corners": set([(3, 2), (3, 3), (4, 2), (4, 3)])}), ] ) tg.add_edges_from( [ ((0, 0), (1, 0), {"diagonal": False}), ((0, 1), (0, 0), {"diagonal": False}), ((0, 1), (0, 2), {"diagonal": False}), ((0, 1), (1, 0), {"diagonal": True}), ((0, 1), (1, 2), {"diagonal": True}), ((1, 1), (2, 2), {"diagonal": True}), ((1, 2), (0, 2), {"diagonal": False}), ((1, 2), (2, 1), {"diagonal": True}), ((2, 0), (1, 0), {"diagonal": False}), ((2, 1), (1, 0), {"diagonal": True}), ((2, 1), (2, 0), {"diagonal": False}), ((3, 0), (2, 0), {"diagonal": False}), ((3, 0), (2, 1), {"diagonal": True}), ((3, 0), (3, 1), {"diagonal": False}), ((3, 1), (2, 0), {"diagonal": True}), ((3, 1), (2, 1), {"diagonal": False}), ((3, 2), (2, 2), {"diagonal": False}), ] ) pd = PixelData(mkpixels(ISLAND)) pd.make_pixel_graph() self.assertEqual(sorted(tg.nodes(data=True)), sorted(pd.pixel_graph.nodes(data=True))) self.assertEqual(sort_edges(tg.edges(data=True)), sort_edges(pd.pixel_graph.edges(data=True)))
def export_image(options, name): name = name.upper() print("Processing %s..." % (name,)) data = PixelData(test_depixeler.mkpixels(getattr(test_depixeler, name))) base_filename = name.lower() outdir = options.output_dir print(" Writing pixels PNG...") writer = io_data.get_writer(data, base_filename, 'png') writer.export_pixels(outdir)
def process_file(options, filename): print "Processing %s..." % (filename, ) data = PixelData(io_data.read_pixels(filename, 'png')) base_filename = os.path.splitext(os.path.split(filename)[-1])[0] outdir = options.output_dir filetypes = [] if options.to_png: filetypes.append('PNG') if options.to_svg: filetypes.append('SVG') if options.write_pixels: for ft in filetypes: print " Writing pixels %s..." % (ft, ) writer = io_data.get_writer(data, base_filename, ft.lower()) writer.export_pixels(outdir) data.depixel() if options.write_grid: for ft in filetypes: print " Writing grid %s..." % (ft, ) writer = io_data.get_writer(data, base_filename, ft.lower()) writer.export_grid(outdir, options.draw_nodes) if options.write_shapes: for ft in filetypes: print " Writing shapes %s..." % (ft, ) writer = io_data.get_writer(data, base_filename, ft.lower()) writer.export_shapes(outdir, options.draw_nodes) if options.write_smooth: for ft in filetypes: print " Writing smooth shapes %s..." % (ft, ) writer = io_data.get_writer(data, base_filename, ft.lower()) writer.export_smooth(outdir, options.draw_nodes)
def test_remove_diagonals(self): tg = nx.Graph() tg.add_nodes_from([ ((0, 0), { 'value': 1, 'corners': set([(0, 0), (0, 1), (1, 0), (1, 1)]) }), ((0, 1), { 'value': 1, 'corners': set([(0, 1), (0, 2), (1, 1), (1, 2)]) }), ((0, 2), { 'value': 1, 'corners': set([(0, 2), (0, 3), (1, 2), (1, 3)]) }), ((1, 0), { 'value': 1, 'corners': set([(1, 0), (1, 1), (2, 0), (2, 1)]) }), ((1, 1), { 'value': 0, 'corners': set([(1, 1), (1, 2), (2, 1), (2, 2)]) }), ((1, 2), { 'value': 1, 'corners': set([(1, 2), (1, 3), (2, 2), (2, 3)]) }), ((2, 0), { 'value': 1, 'corners': set([(2, 0), (2, 1), (3, 0), (3, 1)]) }), ((2, 1), { 'value': 1, 'corners': set([(2, 1), (2, 2), (3, 1), (3, 2)]) }), ((2, 2), { 'value': 0, 'corners': set([(2, 2), (2, 3), (3, 2), (3, 3)]) }), ((3, 0), { 'value': 1, 'corners': set([(3, 0), (3, 1), (4, 0), (4, 1)]) }), ((3, 1), { 'value': 1, 'corners': set([(3, 1), (3, 2), (4, 1), (4, 2)]) }), ((3, 2), { 'value': 0, 'corners': set([(3, 2), (3, 3), (4, 2), (4, 3)]) }), ]) tg.add_edges_from([ ((0, 0), (1, 0), { 'diagonal': False }), ((0, 1), (0, 0), { 'diagonal': False }), ((0, 1), (0, 2), { 'diagonal': False }), ((0, 1), (1, 0), { 'diagonal': True }), ((0, 1), (1, 2), { 'diagonal': True }), ((1, 1), (2, 2), { 'diagonal': True }), ((1, 2), (0, 2), { 'diagonal': False }), # ((1, 2), (2, 1), {'diagonal': True}), ((2, 0), (1, 0), { 'diagonal': False }), ((2, 1), (1, 0), { 'diagonal': True }), ((2, 1), (2, 0), { 'diagonal': False }), ((3, 0), (2, 0), { 'diagonal': False }), # ((3, 0), (2, 1), {'diagonal': True}), ((3, 0), (3, 1), { 'diagonal': False }), # ((3, 1), (2, 0), {'diagonal': True}), ((3, 1), (2, 1), { 'diagonal': False }), ((3, 2), (2, 2), { 'diagonal': False }), ]) pd = PixelData(mkpixels(ISLAND)) pd.make_pixel_graph() pd.remove_diagonals() self.assertEqual(sorted(tg.nodes(data=True)), sorted(pd.pixel_graph.nodes(data=True))) self.assertEqual(sort_edges(tg.edges(data=True)), sort_edges(pd.pixel_graph.edges(data=True)))
def get_heuristics(self, txt_data): pd = PixelData(mkpixels(txt_data)) pd.make_pixel_graph() return IterativeFinalShapeHeuristics(pd.pixel_graph)
def get_heuristics(self, txt_data): pd = PixelData(mkpixels(txt_data)) pd.make_pixel_graph() return FullyConnectedHeuristics(pd.pixel_graph)