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

Marc Jansen jansen.marc at gmx.de
Fri Feb 16 08:54:02 EST 2007


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


More information about the Mapbender_users mailing list