Bonjour,
Dans la macro python mise en pièce jointe, je parcoure des fichiers powerpoint (des milliers) pour en extraire les images.
Il y a cependant 2 cas qui ne sont pas couverts:
1) une image en arrière plan
2) une image bitmap utilisée comme remplissage dans une forme rectangle.
J'ai intégré ces 2 cas dans le fichier problems.odp, également zippé
Auriez-vous une idée de la façon d'accéder à ces images via l'api ?
Merci d'avance
[Résolu][Python] Export d'images de PPT sous Impress
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Fraîchement OOthentifié
- Messages : 7
- Inscription : 24 avr. 2012 13:34
[Résolu][Python] Export d'images de PPT sous Impress
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 5.1.6 (Avec APSO et MRI) on ubuntu 16.04
-
- RespOOnsable forum
- Messages : 12230
- Inscription : 08 nov. 2005 16:23
- Localisation : Caen, France
Re: [Impress] Exporter les images de fichiers powerpoint
Pour la bonne tenue de ce forum, vous êtes invité à donner suite à : https://forum.openoffice.org/fr/forum/v ... =3&t=33382
Notamment en ajoutant le classique [Résolu] si tel est le cas.
Notamment en ajoutant le classique [Résolu] si tel est le cas.
Balisage modifié et titre adaptésgeulette a écrit :Dans la macro python
-
- PassiOOnné
- Messages : 629
- Inscription : 09 août 2017 22:15
Re: [Python] Export d'images de PPT sous Impress
hello,
1 - on récupère l'image de fond
2 - on crée un objet graphique
3 - on met l'image dedans
4 - on exporte l'objet en fichier image
voici un exemple de code en basic facilement adaptable au python :
Ami calmant, J.P
voici une solution possible pour l'arrière-plan mais le principe devrait être le même pour une image de remplissage.sgeulette a écrit :Bonjour,
Dans la macro python mise en pièce jointe, je parcoure des fichiers powerpoint (des milliers) pour en extraire les images.
Il y a cependant 2 cas qui ne sont pas couverts:
1) une image en arrière plan
2) une image bitmap utilisée comme remplissage dans une forme rectangle.
J'ai intégré ces 2 cas dans le fichier problems.odp, également zippé
Auriez-vous une idée de la façon d'accéder à ces images via l'api ?
Merci d'avance
1 - on récupère l'image de fond
2 - on crée un objet graphique
3 - on met l'image dedans
4 - on exporte l'objet en fichier image
voici un exemple de code en basic facilement adaptable au python :
Code : Tout sélectionner
Sub ExtraireFondImpress()
Dim oDoc as Object
Dim oGraphic as Object
Dim oExporter as Object
Dim oShape as Object
Dim oDrawPages as Object, oDrawPage as Object
Dim aURL As New com.sun.star.util.URL
Dim aArgs(1) As New com.sun.star.beans.PropertyValue
aURL.Complete = ConvertToURL("M:\test\export.png" )
aArgs(0).Name = "MediaType"
aArgs(0).Value = "image/png"
aArgs(1).Name = "URL"
aArgs(1).Value = aURL
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
oDrawPage = oDrawPages.getByIndex(0)
if not isEmpty(oDrawPage.Background) then
oGraphic = oDrawPage.Background.FillBitmap
oShape = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
oShape.Size = oGraphic.Size100thMM
oShape.FillStyle = com.sun.star.drawing.FillStyle.BITMAP
oShape.FillBitmap = oGraphic
oDrawPage.add(oShape)
oExporter = createUnoService("com.sun.star.drawing.GraphicExportFilter")
oExporter.SetSourceDocument( oShape)
oExporter.Filter(aArgs)
oShape.Dispose
end if
End Sub
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
-
- Fraîchement OOthentifié
- Messages : 7
- Inscription : 24 avr. 2012 13:34
Re: [Python] Export d'images de PPT sous Impress
Merci Jurassic Pork pour ta réponse.
J'ai transposé cela en python
mais j'ai 2 problèmes:
Cela ne fonctionne donc pas/plus avec la version 5.1.6.2 de LO sous Ubuntu.
Cette macro fonctionne-t-elle en LO 6 ? ou était-ce avec une version plus ancienne ?
Si quelqu'un peut essayer de son côté... ce serait sympa.
Bav
J'ai transposé cela en python
Code : Tout sélectionner
outfilename = os.path.join(outdir, '%s_%03d.png' % (part1, i_nb))
img = page.Background.FillBitmap
out_url = uno.systemPathToFileUrl(outfilename)
shape = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
shape.Size = img.Size100thMM
shape.FillStyle = BITMAP
shape.FillBitmap = img
mri(ctx, shape)
page.add(shape)
gef.setSourceDocument(shape)
params = [new_pv('MediaType', 'image/png'), new_pv('URL', out_url)]
gef.filter(params)
shape.dispose()
- l'image exportée est de bonne taille mais vide (comme l'exemple attaché)
- la ligne "shape.dispose()" fait crasher LO
Cela ne fonctionne donc pas/plus avec la version 5.1.6.2 de LO sous Ubuntu.
Cette macro fonctionne-t-elle en LO 6 ? ou était-ce avec une version plus ancienne ?
Si quelqu'un peut essayer de son côté... ce serait sympa.
Bav
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 5.1.6 (Avec APSO et MRI) on ubuntu 16.04
-
- PassiOOnné
- Messages : 629
- Inscription : 09 août 2017 22:15
Re: [Python] Export d'images de PPT sous Impress
hello,
bon j'ai fait un essai sous Lubuntu 16.04 avec LibreOffice 6.1 pas de crash. Par contre sous Centos 7.6 LibreOffice 5.4.3 crash comme toi et pas d"image.
En fait le code de la macro n'était pas bon ( déjà sous windows 10 l'image exportée présentait un défaut (un petit logo en haut à gauche).
dans la oShape il ne faut pas utiliser la propriété FillBitmap mais la propriété Graphic et pour enlever l'objet il ne faut pas faire un dispose mais faire un remove sur la drawpage.
Voici un code qui fonctionne maintenant chez moi sous windows 10 LibreOffice 6.1 et sous Centos 7.6 LibreOffice 5.4.3 :
Ami calmant, J.P
bon j'ai fait un essai sous Lubuntu 16.04 avec LibreOffice 6.1 pas de crash. Par contre sous Centos 7.6 LibreOffice 5.4.3 crash comme toi et pas d"image.
En fait le code de la macro n'était pas bon ( déjà sous windows 10 l'image exportée présentait un défaut (un petit logo en haut à gauche).
dans la oShape il ne faut pas utiliser la propriété FillBitmap mais la propriété Graphic et pour enlever l'objet il ne faut pas faire un dispose mais faire un remove sur la drawpage.
Voici un code qui fonctionne maintenant chez moi sous windows 10 LibreOffice 6.1 et sous Centos 7.6 LibreOffice 5.4.3 :
Code : Tout sélectionner
Sub ExtraireFondImpress()
Dim oDoc as Object
Dim oGraphic as Object
Dim oExporter as Object
Dim oShape as Object
Dim oDrawPages as Object, oDrawPage as Object
Dim aURL As New com.sun.star.util.URL
Dim aArgs(1) As New com.sun.star.beans.PropertyValue
rem aURL.Complete = ConvertToURL("/home/jurassic/export.png" )
aURL.Complete = ConvertToURL("M:\test\exportfond.png" )
aArgs(0).Name = "MediaType"
aArgs(0).Value = "image/png"
aArgs(1).Name = "URL"
aArgs(1).Value = aURL
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
oDrawPage = oDrawPages.getByIndex(0)
if not isEmpty(oDrawPage.Background) then
oGraphic = oDrawPage.Background.FillBitmap
oShape = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
oShape.Size = oGraphic.Size100thMM
oShape.FillStyle = com.sun.star.drawing.FillStyle.BITMAP
oShape.Graphic = oGraphic
oDrawPage.add(oShape)
oExporter = createUnoService("com.sun.star.drawing.GraphicExportFilter")
oExporter.SetSourceDocument( oShape)
oExporter.Filter(aArgs)
oDrawPage.remove(oShape)
end if
End Sub
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Python] Export d'images de PPT sous Impress
Plus simple à faire...
Enregistrer le document au format HTML.
Les images seront extraites automatiquement dans un répertoire éponyme.
Enregistrer le document au format HTML.
Les images seront extraites automatiquement dans un répertoire éponyme.