Seite 1 von 1

Grafik in höherer Ausflösung exportieren?

Verfasst: Mi, 07.12.2005 02:10
von hugohugo
Hallo zusammen,

ich habe bisher vergeblich versucht, eine Grafik in einer höheren Auflösung als der Standardauflösung zu exportieren. Egal, was man beim BMP-Export als DPI-Auflösung angibt, die exportierte Grafik sieht immer gleich aus. Weiß jemand, wie das gehen könnte?

Vielen Dank
Christian

Verfasst: Mi, 07.12.2005 08:26
von Toxitom
Hey Christian,
Egal, was man beim BMP-Export als DPI-Auflösung angibt,....
Eine BMP-Grafik hat immer nur die Auflösung deines Bilsschirms - eben Pixel für Pixel. Da kannst du nichs "drehen".

Wenn du Auflösungen für Bilder verändern willst, so lade diese anschliessend in ein Bildbearbeitungsprogramm - gimp, photoshop oder ähnliches - und mach es dort. die haben eingebaute Rendering-Engines und könen die Auflösung "verändern" - aber ich glaube nicht für bmp-Grafiken, falls du sie dann wieder in bmp speicherst.

Gruss
Thomas

Verfasst: Mo, 10.04.2006 16:37
von derwinzer
ich glaube, dass das ein DRAW problem ist!

es ist doch reine verschwendung, wenn man die schönen vektorgrafiken etc nicht mit einer höheren auflösung als 72dpiu exportieren kann.

und eine mit kleiner auflösung exportierte grafik im photoshop zu vergößern ist ja genauso sinnlos (qualität?!?) wie sie dann gleich im original zu verwenden(Print...)

schade, weiss jemand vielleicht um ein export plug in?

Quelltext von Makro IndeView anschauen !

Verfasst: Di, 16.05.2006 18:59
von focus_fahrer
Hallo

mit einem Makro sollte es möglich sein in höheren Auflösungen zu exportieren.

Das Programm Indeview exportiert eine Folie als mehrere png-Bilder in unterschiedlichen Auflösungen. Unter anderem bis zu 1600x1200.

Ein Blick in den Quelltext verrät, dass hierfür Variablen verwendet werden und für den Export folgendes Objekt benutzt wird.

Code: Alles auswählen


aWidth(  6) = 1600
aWidthID(6) = 16
aHeight( 6) = 1200

oFilter = CreateUnoService("com.sun.star.drawing.GraphicExportFilter")
Es sollte also möglich sein die gewünschte Auflösung einfach über einen Dialog abzufragen und dafür die besagten Variablen zu verwenden. Man sollte natürlich sonstige für den Export unnötige Teile des Makros entfernen und etwas umstricken.

Indeview kann man unter folgender Adresse herunterladen:
http://indeview.org/index_de.html

Ich kenne mich leider auch nicht mit OpenOffice-Makros aus und habe im Moment keine Zeit für Experimente. Für jemanden der sich auskennt sollte es aber nicht lange dauern.

Gruß focus_fahrer

Code von IndeView für PNG-Export geändert

Verfasst: Mi, 17.05.2006 14:41
von focus_fahrer
Hallo

ich hab den Code von IndeView jetzt doch etwas angepasst, es fehlt jedoch noch ein schicker Auswahl-Dialog, wo man z.B. Auflösung und die gewünschten Seiten auswählen kann.

Im Moment werden in das Ziel-Verzeichnis einfach alle Seiten eines Draw- oder Impress-Dokuments als einzelne png-Dateien ausgegeben. Die Dateinamen werden ähnlich wie bei IndeView automatisch erstellt. Hier wäre es auch nett, wenn man den Zieldateinamen auswählen könnte, aber dafür habe ich im Moment keine Zeit.

Als maximale Auflösung hat sich etwa 4000x3000 Pixel ergeben, viel größere Auflösungen scheinen nicht zu funktionieren. Ein Versuch wäre es Wert, das ganze mit BMP als Ausgabeformat zu versuchen, aber hier müsste man sich erst mal die entsprechenden Parameter usw. zusammensuchen.

Hier mal den Code:

Code: Alles auswählen

REM ####################################################################################
REM 2006_05_17 14Uhr16
REM 
REM PNG Export Script
REM Grosse Teile des Codes von IndeView übernommen (http://www.indeview.org)
REM ####################################################################################

Sub PNGExport

    DIM oDoc As Object
    oDoc = ThisComponent
	
	DIM oDir As Object
	oDir = createunoservice("com.sun.star.ui.dialogs.FolderPicker")
	With oDir
		.setDisplayDirectory( "file:///" )
		.setTitle("IndeView Export - select target directory")
		.setDescription("Select target directory")
	End With
	
	If oDir.execute() Then
		DIM sDir As String
		DIM expDir As String
		DIM sName As String
		DIM nNumPages As Integer
		DIM nPage As Integer
		DIM oPage As Object
		DIM oFilter As Object
		DIM aFilterData( 2 ) As new com.sun.star.beans.PropertyValue
		DIM aDescriptor( 2 ) As new com.sun.star.beans.PropertyValue
		DIM sFileNameExt As String
		DIM sFileName As String

        DIM nFile As Integer
        DIM sPageID As String
        DIM sSep As String

        DIM aWidth As Integer
        DIM aHeight As Integer

		REM Groessere Werte scheinen nicht zu gehen und machen Probleme
		REM Bei Tests hat es noch bis 4020x3015 geklappt
        
        aWidth	= 4000
        aHeight	= 3000


        sDir = oDir.directory
		sSep = GetPathSeparator()

		aFilterData(0).Name = "Width"
		aFilterData(1).Name = "Height"
		aFilterData(2).Name = "Translucent"
		aFilterData(2).Value = false

		aDescriptor(0).Name = "FilterName"
		aDescriptor(0).Value = "PNG"
		sFileNameExt     =    ".PNG"
		aDescriptor(1).Name = "URL"
		aDescriptor(2).Name = "FilterData"

		oFilter = CreateUnoService("com.sun.star.drawing.GraphicExportFilter")
		nNumPages = oDoc.DrawPages.getCount()
		For nPage = 0 To nNumPages-1

			oPage = oDoc.DrawPages( nPage )
			sName = oPage.getName()
			sPageID = "Page" + LTrim(Str( nPage ))

			expDir = ConvertFromUrl( sDir )

			On Error GOTO mkdata_error
			MkDir expDir
			GOTO mkdata_ok

mkdata_error:
			MsgBox( chr$(13) + "ERROR: Directory" + chr$(13) + chr$(13) + expDir + chr$(13) + chr$(13) + "could not be created!" + chr(13) , 0+48 , "IndeView export" )
			Exit Sub
mkdata_ok:

			oFilter.setSourceDocument( oPage )

			If  10 > nPage Then
				sFileName = "P00"
			Else
				If  100 > nPage Then
					sFileName = "P0"
				Else
					sFileName = "P"
				End If
			End If

			sFileName = sFileName + LTrim(Str( nPage )) + "W" + sFileNameExt

			aDescriptor(1).Value = sDir + "/" + sFileName

			aFilterData(0).Value = aWidth
			aFilterData(1).Value = aHeight
			aDescriptor(2).Value = aFilterData()

			oFilter.filter( aDescriptor() )

		Next
		MsgBox ( chr$(13) + "Der Export wurde erfolgreich durchgeführt" + chr$(13) + "Die Bilder sind unter folgendem Verzeichnis zu finden:" + chr$(13) + chr$(34)+ sDir + chr$(34),0 ,"Export erfolgreich" )
	End If
End Sub

REM ####################################################################################
Das Makro müßt ihr dann nur noch einbinden und vielleicht einer neuen Schaltfläche zuweisen. Näheres findet ihr auf der IndeView-Homepage. Dort ist das alles ganz gut beschrieben.

Ach ja, noch eine Frage: Gibt es eigentlich in diesem Forum keinen Dateibereich, wo man irgendwelche Files ablegen kann. Ich hätte sonst mal meine "testseite.odg" und einen Ausschnitt aus dem png-Bild angehängt.

Ich hoffe, dass ihr damit was anfangen könnt. Ich finde, dass damit recht passable Bilder dabei herauskommen.

Gruß focus_fahrer

Verfasst: Mi, 30.08.2006 12:47
von Peter Kalkert
Es gibt noch einen Weg Grafiken in OO-Draw mit höherer Auflösung zu exportieren:
- Seitenformat wählen und die Papiergröße auf Maximum einstellen (entspricht ca. DIN A0)
- Zeichnung auf volle Seitengröße skalieren
- exportieren (als JPG oder png)
- jpg-Datei anschließend neu laden und als bmp speichern