AW: AW: AW: [Mapbender-users] Druck mit externen Diensten

Fischer, Andreas Andreas.Fischer at kreis-unna.de
Fri Feb 16 09:30:29 EST 2007


Hallo Marc und Michael,
na, das hört sich doch alles schon sehr gut an! Und ich freue mich darüber,
weil ich mir diese Aufgabe schon lange vorgenommen habe. Hoffe in der
nächsten Woche bleibt Zeit, das entspechend einzubauen und zu testen!

Wenn mitunter Probleme in der Qualität der verkleinerten Bilder mit
*imagecopyresampled* zu befürchten sind, wäre es nicht auch eine
Möglichkeit, gegebenenfalls mehrere Bilder zurückzugeben und erst in einer
Schleife mit
		$pdf->addPngFromFile($filename, $mapOffset_left,
$mapOffset_bottom, $map_width, $map_height);
in der mod_printPDF_pdf.php zu einem endgültigen Bild zu überlagern. Geht
das mit addPngFromFile überhaupt, wenn das mit gleichen Größen- und
Positionsangaben mit verschiedenen Bildern passiert?
Ich gehe 'mal davon aus, dass hier durch die Werte von $map_width und
$map_height letztendlich das Verkleinern im Falle eine hq-Druckes erfolgt.

... und noch etwas anderes zum Thema Drucken: 
Wenn die generelle Überarbeitung angedacht ist, würde ich gerne noch
Vorschläge zur Diskussion stellen. 
Ich habe die Druckfunktion z.B. so umgebaut, dass sich die Größe des
mapframe nicht an das Ausgabeformat anpasst, sondern vom Mittelpunkt des
Kartenfensters ausgehend soviel gedruckt wird, wie in das Layout passt.
Könnte vielleicht als Option für den Druck auch für andere von Interesse
sein. Außerdem habe ich den Druckdialog um eine Layoutauswahl ergänzt, die
zudem an Berechtigungen gekoppelt ist (Layout für amtliche
Katasterauskunft!). Und dann hätte ich da noch weitere Wünsche ... :-)

Gruß
Andreas

-----Ursprüngliche Nachricht-----
Von: mapbender_users-bounces at lists.osgeo.org
[mailto:mapbender_users-bounces at lists.osgeo.org]Im Auftrag von Marc
Jansen
Gesendet: Freitag, 16. Februar 2007 14:54
An: Mapbender User List
Betreff: Re: AW: AW: [Mapbender-users] Druck mit externen Diensten


Michael Schulz schrieb:
> Hallo Marc, Andreas,
>
>>
>> Zunächst könnte man die Zeilen:
>>
>> $o_url->set('width',(intval($o_url->get('width'))*4));
>> $o_url->set('height',(intval($o_url->get('height'))*4));
>
> <klugschei..eralarm>die Zeilen sind für das
> overview-Bild</klugschei..eralarm> ;-), aber stimmt, die äquivalenten
> Zeilen für die Karte könnten in die if-Schleife rein. Dann behielten
> die ihre Größe.
>
Ich sollte mir vielleciht etwas mehr zeit nehmen., um hier zu antworten, 
dann würden diese Flüchtigkeitsfehler seltener ;~)

> Dieses array wird aber dann an die weldmaps-klasse übergeben, und die
> legt wiederum mit der Größe des ersten wms das endgültige Bild an
> (welches ins pdf kommt). Angenommen, die Größen des ersten wms werden
> mit 4 multipliziert und ein entsprechendes Bild geladen, dann kommt
> ein wms mit geringeren Maßen, so wird ein kleines Bild angefordert und
> dann mit imagecopy in das große Bild reinplatziert. Aber dabei findet
> doch keine Größenanpassung mehr statt, oder?
>

Richtig. Das wäre in dem besprochenen Fall ein Problem:

+--------------------------------------+
|                  |                   | 
|                  |                   |
|                  |                   |
|                  |                   |
|------------------+                   |
|                                      |
|                                      |
|                                      |
|                                      |
+--------------------------------------+



> An der stelle in der Klasse weldmaps sollte stattdessen
> imagecopyresampled rein, dann würde das Bild tatsächlich an die
> "große" Größe angepasst (aber auch nur wenn der erste wms vergrößert
> wurde, wenn der nämlich, weil er das nicht unterstützt, das kleine
> Format anfordert, dann wird das endgültige Bild auch die kleine Größe
> haben). Das resamplen sollte wiederum nur stattfinden wenn tatsächlich
> Größendifferenzen da sind, sonst könnten schlimmstenfalls irgendwelche
> Artefakte in das Bild reinkommen.
>

Vielleicht könnte das so geschehen: (in die class_ weldMaps2PNG)

            $url[$i] = $obj->setPNG();
            $url[$i] = $obj->encodeGET();
            $img = $this->loadpng($url[$i]);
            $thisW = $obj->get("width");
            $thisH = $obj->get("height");
            if($img != false){
                if ( $thisW != $width   || $thisH != $height) {
                    // we cannot simply copy, there are different sizes
                    imagecopyresampled($image, $img, 0, 0, 0, 0, $width, 
$height, $thisW, $thisH);
                } else {
                    // same size.. copy image to existing image
                    imagecopy($image, $img, 0, 0, 0, 0, $width, $height);
                }
                @imagedestroy($img);
            }

Wenn das erste Bild ein kleines ist, werden alle nachfolgenden auf 
ddiese Größe minimiert. Die Qualität sollte aber ähnlich gut sein, als 
wenn man die verkleinerung der PDF-klasse überlässt.
Vielleicht kann das von Euch jemand überprüfen, ich habe das nicht getestet.

Wie schon angedeutet, ich habe mir vorgenommen, den Druck iin Zukunft zu 
überarbeiten, unter kann dann auch so etwa einfließen.

Beste Grüße,

-- Marc
_______________________________________________
Mapbender_users mailing list
Mapbender_users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapbender_users


More information about the Mapbender_users mailing list