|
Boost : |
From: Mateusz Loskot (mateusz_at_[hidden])
Date: 2019-07-03 19:32:20
On 19-07-03 14:45:49, stefan wrote:
>On 2019-06-27 3:14 a.m., Mateusz Loskot wrote:
>>
>>I've been thinking for a while about a most convenient way to use input
>>images for tests, and I see the following options:
>>
>>1. Use and require the I/O extension, and their dependencies.
>> For convenience, we could limit the required dependencies to
>> libpng and/or libjpeg.
>
>Not a bad option, given how ubiquitous those two formats (and
>libraries) are.
Yes, it is not a bad option in terms of dependencies accessibility.
I just think that a human-readable format has that advantage of easy construction
and easy inspection of pixel/channel values, what is quite useful for testing
and debugging purposes. Technically, easier than with binary formats.
>>2. Use text-based human-readable images onlfor example
>> For example, the I/O extension provides implementation of the
>>Portable aNyMap
>> (PNM) format and it does not require any third-party libraries.
>> Perhaps, it could be considered as a 'reference I/O format' and
>>moved from I/O
>> extension to I/O core. Then, it could serve as format for any test
>>images.
>> The PNM images could be easily prepared with ubiquitous tools like
>>ImageMagick
>> or GraphicsMagick, or as well as optional GIL-based utility.
>>
>> An example of similar approach from the wild could be
>>Boost.Geometry, where
>> text-based formats, i.e. CSV (DSV), SVG and WKT, are extensively
>>used for
>> testing, debugging and visualising. So, implementation of the
>>three formats is
>> part of core and not Geometry I/O extension.
>
>That's also a good argument: given that our PNM implementation doesn't
>require an external library, we could move it from extension into core
>(we can keep the existing extension API for compatibility), and then
>base tests on that format.
Yes, good point about the API compatibility. We should be able to keep current
structure of headers with little help of some proxy headers.
>>I am inclined towards the option 2, that is because:
>>- I prefer human-readable formats, especially for testing and debugging
>>- I think it would be very useful to have GIL core providing I/O for
>>at least one
>> image format out of the box.
>>- Git can revision text files.
>>
>>I'd like to encourage some brainstorming about that issue,
>>so any feedback is very welcomed.
>
>I'm with you: I also think option 2 is best (if we can identify one
>"builtin" format), but option 1 wouldn't be bad either.
Thank you. Soon, I will propose a PR moving PNM as a core I/O format.
Best regards,
-- Mateusz Loskot, http://mateusz.loskot.net Fingerprint=C081 EA1B 4AFB 7C19 38BA 9C88 928D 7C2A BB2A C1F2
Boost list run by Boost-Gil-Owners