Esempio n. 1
0
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)
Esempio n. 2
0
    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()))
Esempio n. 3
0
    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)))
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)))
Esempio n. 6
0
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)
Esempio n. 7
0
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)
Esempio n. 8
0
    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()))
Esempio n. 9
0
    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)))
Esempio n. 10
0
 def get_heuristics(self, txt_data):
     pd = PixelData(mkpixels(txt_data))
     pd.make_pixel_graph()
     return IterativeFinalShapeHeuristics(pd.pixel_graph)
Esempio n. 11
0
 def get_heuristics(self, txt_data):
     pd = PixelData(mkpixels(txt_data))
     pd.make_pixel_graph()
     return FullyConnectedHeuristics(pd.pixel_graph)
Esempio n. 12
0
 def get_heuristics(self, txt_data):
     pd = PixelData(mkpixels(txt_data))
     pd.make_pixel_graph()
     return IterativeFinalShapeHeuristics(pd.pixel_graph)
Esempio n. 13
0
 def get_heuristics(self, txt_data):
     pd = PixelData(mkpixels(txt_data))
     pd.make_pixel_graph()
     return FullyConnectedHeuristics(pd.pixel_graph)