Pictures in the stream are identified by the offset which is stored in EscherBSERecord. Current code finds image data by its 16-byte checksum (UID). It doesn't work in all cases. I have a sample created on MAC where the UID stored in the EscherBSERecord and the UID in the Pictures OLE stream are not the same. Idea to find images by offset is much better and works in all cases. Yegor
Created attachment 18571 [details] patch with the fix
Created attachment 18572 [details] org.apache.poi.hslf.model.Picture
Created attachment 18573 [details] org.apache.poi.hslf.usermodel.PictureData
Just went to commit this, but the test "usermodel.TestPictures" fails It seems that PictureData just has 0 for the offset. Is there another patch we're missing, to correctly populate that?
Created attachment 18600 [details] org.apache.poi.hslf.usermodel.PictureData
Created attachment 18601 [details] org.apache.poi.hslf.model.Picture
Created attachment 18602 [details] patch with the fix
Created attachment 18603 [details] org.apache.poi.hslf.usermodel.SlideShow
My bad. I re-attached the patch and modified files. Now it should work fine. Yegor
That one looks happier :) Thanks for these patches, I've committed them.