65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
import pydiffvg
|
|
import sys
|
|
import numpy as np
|
|
import torch
|
|
sys.path.append("../pydiffvg")
|
|
|
|
from optimize_svg import OptimizableSvg
|
|
|
|
pydiffvg.set_use_gpu(False)
|
|
|
|
"""
|
|
for x in range(100000):
|
|
inmat=np.eye(3)
|
|
inmat[0:2,:]=(np.random.rand(2,3)-0.5)*2
|
|
decomp=OptimizableSvg.TransformTools.decompose(inmat)
|
|
outmat=OptimizableSvg.TransformTools.recompose(torch.tensor(decomp[0],dtype=torch.float32),torch.tensor(decomp[1],dtype=torch.float32),torch.tensor(decomp[2],dtype=torch.float32),torch.tensor(decomp[3],dtype=torch.float32)).numpy()
|
|
dif=np.linalg.norm(inmat-outmat)
|
|
if dif > 1e-3:
|
|
print(dif)
|
|
print(inmat)
|
|
print(outmat)
|
|
print(decomp)"""
|
|
|
|
|
|
infile='./imgs/note_small.svg'
|
|
|
|
|
|
canvas_width, canvas_height, shapes, shape_groups = \
|
|
pydiffvg.svg_to_scene(infile)
|
|
scene_args = pydiffvg.RenderFunction.serialize_scene(\
|
|
canvas_width, canvas_height, shapes, shape_groups)
|
|
render = pydiffvg.RenderFunction.apply
|
|
img = render(canvas_width, # width
|
|
canvas_height, # height
|
|
2, # num_samples_x
|
|
2, # num_samples_y
|
|
0, # seed
|
|
None, # background_image
|
|
*scene_args)
|
|
# The output image is in linear RGB space. Do Gamma correction before saving the image.
|
|
pydiffvg.imwrite(img.cpu(), 'test_old.png', gamma=1.0)
|
|
|
|
#optim=OptimizableSvg('linux.svg',verbose=True)
|
|
optim=OptimizableSvg(infile,verbose=True)
|
|
|
|
scene=optim.build_scene()
|
|
scene_args = pydiffvg.RenderFunction.serialize_scene(*scene)
|
|
render = pydiffvg.RenderFunction.apply
|
|
img = render(scene[0], # width
|
|
scene[1], # height
|
|
2, # num_samples_x
|
|
2, # num_samples_y
|
|
0, # seed
|
|
None, # background_image
|
|
*scene_args)
|
|
|
|
|
|
|
|
with open("resaved.svg","w") as f:
|
|
f.write(optim.write_xml())
|
|
|
|
# The output image is in linear RGB space. Do Gamma correction before saving the image.
|
|
pydiffvg.imwrite(img.cpu(), 'test_new.png', gamma=1.0)
|
|
|
|
print("Done!") |