Closed JimBobSquarePants closed 4 months ago
any updates on this? I was looking to use it from ImageSharp (as I do use it for bunch of other stuff)
No changes, happy to accept contributions though!
I think this place is better for a small guide than that discussion @prabhavmehra.
First of all, COM marker is already hooked up in the decoding loop here
The only thing left to do is to actually parse given stream which is skipped right now using this line: stream.Skip(markerContentByteSize);
.
And the final question is where to store parsed results. Results should be saved into JpegMetadata class. AFAIR we decided to implement it as an ICollection<char[]>
property backed by a List<char[]>
.
The only thing that bothers me is what should we do if there are no COM markers in given JPEG, leave new property as null or an empty ICollection...
How about a nullable Memory<char>
?
I would like to add in here that I feel reading COM
markers should be explicitly opt-in. (could be exposed as a new property on JpegDecoderOptions
)
The writing side of things however can be left as implicitly opt-in by the fact we have the metadata set or not.
I feel it needs to be opt-in for a couple of reasons.
How about a nullable Memory
?
Jpeg can have many COM markers so either List<Memory<char>>
or List<char[]>
but what's the profit using Memory<T>
here? :)
@tocsoft extra configuration seems fair.
Mostly API consistency, we use that type for color pallet pallet metadata.
Mostly API consistency, we use that type for color pallet pallet metadata.
Fair enough, I have nothing against nullable ICollection<Memory<char>>
then :)
This was added in #2641
Discussed in https://github.com/SixLabors/ImageSharp/discussions/2061