-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TIFFFillTile: Read error
when writing a TIFF file on a per-tile basis.
#470
Comments
TIFFFillTile: Read error
when writing a TIFF file on a per-tile-basis.TIFFFillTile: Read error
when writing a TIFF file on a per-tile basis.
Sorry, I don't think this is going to work :( The best you can do with pyvips is something like (untested!!): tiles = [some expression to yield a list of numpy tiles]
# you can use `new_from_array` to make a vips image from a numpy array
# they will share memory buffers, so there's no copying and it should be efficient
image = pyvips.Image.arrayjoin([pyvips.Image.new_from_array(tile) for tile in tiles],
across=tile_across)
image.write_to_file("x.tif", tile=True, pyramid=True) But this will unfortunately force the whole image into ram. You could test it and see how memory performance scales, but I fear it may not be good enough. We've been talking about a better way to generate images like this, but it's not trivial and no one's done the work. |
Thanks for the quick response and your help. I'll give it a try 👍. |
@jcupitt any updates on this?
|
You'd need to add a new operator to libvips which would fire a signal (eg. You'd then wrap this in pyvips and connect the signal to a method called I've no idea what performance would be like. We'd need to do some experiments. |
Hello People,
firstly, thanks a lot for providing the python bindings for vips. They are really helpful 😄.
I am facing a library issue when trying to write a tiff image in tile-based fashion.
The use case:
I get tiles generated by some kind of source (e.g. a CV deep learning model). Since the composed image would be too large to fit in RAM, I want to write it to disk on a per-tile basis, but when reading the image again, I am getting a
TIFFFillTile: Read error at row 896, col 896, tile 16; got 0 bytes, expected 49152
.I broke down the issue to a minimal code example:
This code is failing for me in the latest ubuntu docker image with the most recent vips release with the following error message:
Of course, it might be the case that my code for writing the image on a per-tile basis is just wrong, and I would need to write it differently. In both cases, help would be appreciated 👍.
Thanks for your time,
Martin
The text was updated successfully, but these errors were encountered: