pygerber icon indicating copy to clipboard operation
pygerber copied to clipboard

[PyGerber]: error=tile cannot extend outside image;error=Expected end of text, found '%' (at char 134), (line:10, col:1)

Open seanhuangjf opened this issue 4 months ago • 5 comments

PyGerber Bug Report

error=tile cannot extend outside image error=Expected end of text, found '%' (at char 134), (line:10, col:1)

Code:

try:
    paras = sys.argv[1:]
    paras = [1, "D:/N3_S2CD0012C00_Gerber_V1/smk_c1.gbr","D:/N3_S2CD0012C00_Gerber_V1/ab2.png"]
    if(len(paras) > 2):
        cal_type = paras[0]
        files = []
        if(cal_type == 0):
            for filename in os.listdir(paras[1]):
                if os.path.isfile(os.path.join(paras[1], filename)) and filename.lower().endswith(".gbr"):
                    print(os.path.join(paras[1], filename))  # 输出文件名
                    files.append(os.path.join(paras[1], filename))
        else:
            files = paras[1].split(",")
        save_file = paras[2]
        gerber_files = []
        for index, item in enumerate(files) :
            filename, file_extension_cuts = os.path.splitext(item)
            gerber_files.append(GerberFile.from_file(
                item,
                FileTypeEnum.infer_from_extension(file_extension_cuts.lower())
            ))

        if(len(gerber_files) >0):
            Project(gerber_files).parse().render_raster(save_file,image_format=ImageFormatEnum.PNG,pixel_format=PixelFormatEnum.RGBA)
            print("success",save_file, sep="=")
        else:
            print("failure=gerber files is null or damage!")
    else:
        print("error=args error!")
except Exception as ex_result:
    print("error", ex_result, sep="=")

seanhuangjf avatar Sep 09 '25 03:09 seanhuangjf

@Argmaster A detailed response has been provided via email concerning the abnormal information.I'm waiting for your response.

seanhuangjf avatar Sep 11 '25 01:09 seanhuangjf

Hi, sorry for the late response. Error messages seem to be two separate errors. Could you please provide a full stack trace? First error sounds like something coming from Pillow. Second error could be caused by some syntax construction not recognized by PyGerber. I don't recall getting an email from you, at least recently, so I might have misunderstood your comment or something. Either way, it would help a lot if you could share source files (or at least a single file which allows you to reproduce this error) either here or if you can't publicly share them, at least email them to me ([email protected]). If neither is possible I would need you to compose a minimal Gerber file that allows you to repro the problem but contains as little of the design as possible and post it here. Without a Gerber (.grb) source file I can't do much debug unfortunately.

Argmaster avatar Sep 11 '25 02:09 Argmaster

=====================Single layers============================

Traceback (most recent call last): File "D:\workspace_py\gerberserver\render_file_cmd.py", line 10, in ).parse().render_raster("D:/N3_S2CD0012C00_Gerber_V1/ab2.png") ^^^^^^^ File "D:\workspace_py\gerberserver.venv\Lib\site-packages\pygerber\gerberx3\api_v2.py", line 197, in parse tokens = Tokenizer().tokenize(self.source_code) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\workspace_py\gerberserver.venv\Lib\site-packages\pygerber\gerberx3\tokenizer\tokenizer.py", line 49, in tokenize return self._tokenize_grammar( ^^^^^^^^^^^^^^^^^^^^^^^ File "D:\workspace_py\gerberserver.venv\Lib\site-packages\pygerber\gerberx3\tokenizer\tokenizer.py", line 84, in _tokenize_grammar ast = grammar.parse_string(source, parse_all=parse_all)[0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\workspace_py\gerberserver.venv\Lib\site-packages\pyparsing\core.py", line 1219, in parse_string raise exc.with_traceback(None) pyparsing.exceptions.ParseException: Expected {{End of file end of expression} | {Program stop end of expression}}, found 'D' (at char 0), (line:1, col:1)

=====================Multiple layers============================

Traceback (most recent call last): File "D:\workspace_py\gerberserver.venv\Lib\site-packages\PIL\ImageFile.py", line 644, in _save fh = fp.fileno() ^^^^^^^^^ AttributeError: '_idat' object has no attribute 'fileno'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "D:\workspace_py\gerberserver\render_file_cmd.py", line 31, in Project(gerber_files).parse().render_raster(save_file,image_format=ImageFormatEnum.PNG) File "D:\workspace_py\gerberserver.venv\Lib\site-packages\pygerber\gerberx3\api_v2.py", line 539, in render_raster RasterImageRef(base_image).save_to( File "D:\workspace_py\gerberserver.venv\Lib\site-packages\pygerber\gerberx3\renderer2\abstract.py", line 122, in save_to return self._save_to_io(output, options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\workspace_py\gerberserver.venv\Lib\site-packages\pygerber\gerberx3\renderer2\raster.py", line 950, in _save_to_io image.save(output, **kwargs) File "D:\workspace_py\gerberserver.venv\Lib\site-packages\PIL\Image.py", line 2588, in save save_handler(self, fp, filename) File "D:\workspace_py\gerberserver.venv\Lib\site-packages\PIL\PngImagePlugin.py", line 1495, in _save ImageFile._save( File "D:\workspace_py\gerberserver.venv\Lib\site-packages\PIL\ImageFile.py", line 648, in _save _encode_tile(im, fp, tile, bufsize, None, exc) File "D:\workspace_py\gerberserver.venv\Lib\site-packages\PIL\ImageFile.py", line 666, in _encode_tile encoder.setimage(im.im, extents) SystemError: tile cannot extend outside image

At 2025-09-11 10:50:22, "Krzysztof Wiśniewski" @.***> wrote:

Argmaster left a comment (Argmaster/pygerber#389)

Hi, sorry for the late response. Error messages seem to be two separate errors. Could you please provide a full stack trace? First error sounds like something coming from Pillow. Second error could be caused by some syntax construction not recognized by PyGerber. I don't recall getting an email from you, at least recently, so I might have misunderstood your comment or something. Either way, it would help a lot if you could share source files (or at least a single file which allows you to reproduce this error) either here or if you can't publicly share them, at least email them to me @.***). If neither is possible I would need you to compose a minimal Gerber file that allows you to repro the problem but contains as little of the design as possible and post it here. Without a Gerber (.grb) source file I can't do much debug unfortunately.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

seanhuangjf avatar Sep 11 '25 02:09 seanhuangjf

@Argmaster Sorry, I sent the email to the wrong recipient. I've just resent it to you.

seanhuangjf avatar Sep 11 '25 02:09 seanhuangjf

@Argmaster The email also attached the Gerber file. I'm waiting for your response.

seanhuangjf avatar Sep 11 '25 02:09 seanhuangjf