Bonjour,

Voici ma solution pour redimensionner une image.
NB: l'exportation avec le service GraphicExportFilter ne permet de régler la taille de l'image exportée que si on exporte un shape, une collection de shapes ou une drawpage. Je n'y arrivais pas car j'applicais la fonction Export à l'objet représentant l'image insérée.

Le principe : l'image à retailler est insérée dans un sdraw doc dont la drawpage est retaillée à la même dimansion que l'image. Ensuite il ne reste plus qu'à exporter la draw page en réglant les dimensions. :-)

Encore merci à Bernard de m'avoir aiguillé sur le document d'Andrew Pitonyak.

Si ce code peut être utile ...

Cordialement.


Sub Essai
ResizeExternalImageByWidth("/home/didier/tmp4/about.bmp","/home/didier/tmp4/about_1616.bmp",16)
End sub


Sub ResizeExternalImageByWidth(sURLImage,sURLImageResized as String, iWidth as Integer)
   rem on ouvre un document sdraw invisible
   Dim mFileProperties(0) As New com.sun.star.beans.PropertyValue
   Dim iFormat as Integer
   mFileProperties(0).Name="Hidden"
   mFileProperties(0).Value=True
   oDesktop=createUnoService("com.sun.star.frame.Desktop")
monDocument = oDesktop.LoadComponentFromURL("private:factory/sdraw","_blank",0,mFileProperties())
   maPage = monDocument.DrawPages(0)
rem on insère dans la page l'image à redimmensionner et on fixe sa largeur à 1000 ImageL = monDocument.createInstance("com.sun.star.drawing.GraphicObjectShape")
   ImageL.GraphicURL = ConvertToURL(sURLImage)
   maPage.add(ImageL)
   resizeImageByWidth(ImageL,1000)
   rem on redimensionne la page du doc draw au format de l'image
   iFormat = Int(ImageL.Size.Height/ImageL.Size.Width)
   maPage.Width = 1000
   maPage.Height = 1000*iFormat
   rem on fixe les donnees du filtre d'export
   Dim aFilterData (1) as new com.sun.star.beans.PropertyValue
      aFilterData(0).Name  = "PixelWidth"        '
     aFilterData(0).Value = iWidth*iFormat
      aFilterData(1).Name  = "PixelHeight"
      aFilterData(1).Value = iWidth
      rem on exporte la page de dessin au format bmp
      Export( maPage,sURLImageResized , aFilterData() )
      On error resume Next
      monDocument.Close(True)
      On error goto 0
   End Sub

Sub Export( xObject, sFileUrl As String, aFilterData )
xExporter = createUnoService( "com.sun.star.drawing.GraphicExportFilter" )
  xExporter.SetSourceDocument( xObject )
  Dim aArgs (2) as new com.sun.star.beans.PropertyValue
  Dim aURL as new com.sun.star.util.URL
   sFileUrl = ConvertToURL(sFileUrl)
  aArgs(0).Name  = "FilterName"
  aArgs(0).Value = "bmp"
  aArgs(1).Name  = "URL"
  aArgs(1).Value = sFileUrl
  aArgs(2).Name  = "FilterData"
  aArgs(2).Value = aFilterData
  xExporter.filter( aArgs() )
End Sub

Sub resizeImageByWidth(uneImage As Object, largeur As Long)
   Dim leBitMap As Object, Proportion As Double
   Dim Taille1 As New com.sun.star.awt.Size
   LeBitmap = uneImage.GraphicObjectFillBitmap
   Taille1 = LeBitMap.Size ' taille en pixels !
   Proportion = Taille1.Height / Taille1.Width
   Taille1.Width = largeur ' largeur en 1/100 de mm
   Taille1.Height = Taille1.Width * Proportion
   uneImage.Size = Taille1
End Sub



--
Didier Dorange-Pattoret

http://www.dmaths.org
http://sesamath.net

S'inscrire à la liste de diffusion de dmaths: [EMAIL PROTECTED]
Ses archives: http://listes.dmaths.org/wws/arc/users
Les Forums: http://www.dmaths.org/modules.php?name=Forums
Mailing List in english: 
http://www.dmaths.org/modules.php?name=Content&pa=showpage&pid=9

Le livre de référence pour OpenOffice.org2 : 
http://www.amazon.fr/exec/obidos/ASIN/2212116381/dmaths-21
Programmation OpenOffice.org2 : 
http://www.amazon.fr/exec/obidos/ASIN/2212117639/dmaths-21

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à