When inserting and cropping images (they don't always have to be cropped for this to happen) in a presentation on one machine and then opening the same .odp file on another machine with the exact same Linux OS and exact same version of LO, the figures appear mangled. Not every single figure is affected this way, but usually a number of them are. In some cases it is both in the 'slide sorter' view and also in the 'normal view' of the slide. The 'slide sorter' thumbnails get redrawn after working with the presentation and is merely annoying. When the problem affects the slide in 'normal view' it's a deal breaker of a problem.
This has been a long standing issue (many many years through StarOffice, OpenOffice, Apache OpenOffice, and now LibreOffice). I have posted bug reports before on this, but the problem persists and makes Impress extremely painful to use.
The post here on the Apache OO forum may be the underlying issue, but I don't know because I don't know how LO Impress deals with inserted figures, or figures from other slides that are 'imported' and so on.
I try to always crop images outside of Impress and only import them after, but this doesn't solve the problem. I have generally noticed that if I import slides from .ppt or .pptx that the images import correctly in the LO Impress session, but as soon as I save as .odp and reopen, either on a different machine or the same machine, the images will be distorted.
I have a lot of general questions:
1. How does Impress read image data on an import of say .jpg or .png?
2. How does Impress save this data in the .odp file?
3. How does Impress read image data on an imported SLIDE from another Impress presentation?
4. How does Impress read image data on an imported SLIDE from a .ppt or .pptx presentation?
5. Is the screen resolution ever taken into account when doing any of the above?
This issue is a show stopper for me and it really makes Impress unusable for scientific presentations where there are multiple figures on every slide. If I understand the answers to some of the questions above I may be able to provide much better bug reports.
Finally, can I work directly with one of the developers who knows the internals to help debug this issue?
The following steps *might* mitigate the problem, but are certainly not ideal.
1. For an existing image in a presentation, right click on an image and select "Compress". Then **deselect** "Reduce image resolution". Then select "OK".
2. Crop as needed. Then do all of (1) again.
3. When importing new images, follow the steps in (1), crop as needed, and again do (1).
Finally, even if one follows the steps above and the images display correctly on the slide view, they are still typically mucked up on the 'slide sorter' view. The slide thumbnails are redrawn at some point in working with a presentation and then look fine, but the redrawn thumbnails are lost on closing the .odp.
The resolution to these two problems seems like it might be relatively quick for a developer who knows the code.
A. Why not, when importing new images just go through the compression steps listed above? Whatever that does internally in the .odp appears to work in most cases.
B. To solve the 'slide sorter' view problem, why not just redraw all the thumbnails whenever a presentation is opened?
One last comment is that if an .odp presentation with mangled *slide sorter* images is saved in .ppt format, and opened again with LibreOffice, the slide sorter view of the .ppt slides is fine, the thumbnails are sharp and the images are not mangled. For this to work the slides have to be OK in the normal slide view, fixed by the methods in my comment 1.
Here is a macro that forces LO to redraw the slide thumbnails. This is poorly written, and simply loops through the slides and will copy, paste, and delete each one. I don't what call I need to just force a redraw of the thumbnail, but this works. For some reason this only works if you are in the 'slide sorter' view.
REM ***** BASIC *****
REM * You must be in 'slide sorter' view for this to work!!
msg = "Starting refresh..."
oDoc = ThisComponent
oSlideList = oDoc.getDrawPages()
REM loop through all slides and copy, paste, delete each one
For i = 0 to oDoc.getDrawPages().Count-1
oSlide = oSlideList.getByIndex(i)
REM msg = msg & "get slide : " & i
oController = oDoc.CurrentController
REM oCurrentPage = oController.CurrentPage
oDispatch = createUnoService( "com.sun.star.frame.DispatchHelper")
oProvider = oController.Frame
oDispatch.executeDispatch(oProvider, ".uno:Copy","", 0, Array())
oDispatch.executeDispatch(oProvider, ".uno:Paste", "", 0, Array())
oDispatch.executeDispatch(oProvider, ".uno:Delete","", 0, Array())
REM msgbox msg
Could you attach a screenshot of the mangled state?
You said "I have posted bug reports before on this" - could you provide links to these reports?
There is currently ongoing work regarding the handling of bitmaps. You might want to test a daily build.
Created attachment 140451 [details]
before forcing redraw of the slides in slide sorter
I have attached two png files. first.png shows the slides in slide sorter as opened from a .odp file. After I run the macro above to force it to redraw the slides, it becomes the after.png.
Created attachment 140452 [details]
after forcing redraw of the slides
My previous bug reports 108879 and 111340 were related to this bug, but those are largely solved by following the steps I outline here.
*** Bug 116164 has been marked as a duplicate of this bug. ***
NEW per dupe