 | OO-Snippets: resize an external imageCommons| Keywords | resize, image |
|---|
| Language | OOBasic |
|---|
| Application | Office |
|---|
| Authors | Dorange-Pattoret Didier (initial)
|
|---|
| Supported Versions | 2.0.x |
|---|
| Supported OS | All |
|---|
| Question |
How can I resize an external from inside my OpenOffice without using any external programm.
|
|---|
| Answer | |
|---|
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)
Dim mFileProperties(0) As New com.sun.star.beans.PropertyValue
Dim Proportion as Single
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)
ImageL = monDocument.createInstance("com.sun.star.drawing.GraphicObjectShape")
ImageL.GraphicURL = ConvertToURL(sURLImage)
maPage.add(ImageL)
resizeImageByWidth(ImageL,1000)
Proportion = ImageL.Size.Height/ImageL.Size.Width
maPage.Width = 1000
maPage.Height = ArrondiEntier(1000*Proportion)
Dim aFilterData (1) as new com.sun.star.beans.PropertyValue
aFilterData(0).Name = "PixelWidth"
aFilterData(0).Value = iWidth
aFilterData(1).Name = "PixelHeight"
aFilterData(1).Value = ArrondiEntier(iWidth*Proportion)
Export( maPage,sURLImageResized , aFilterData() )
On error resume Next
monDocument.Close(True)
On error goto 0
End Sub
Function ArrondiEntier(Nombre as Single) as Integer
If Nombre-Int(Nombre) < 0.5 Then
ArrondiEntier = Int(Nombre)
Else
ArrondiEntier = Int(Nombre)+1
Endif
End Function
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
Proportion = Taille1.Height / Taille1.Width
Taille1.Width = largeur
Taille1.Height = Taille1.Width * Proportion
uneImage.Size = Taille1
End Sub
|
|