DMUG-Archiv 2004

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Weißer Rand um DensityGraphics

On Mon, 23 Aug 2004 13:53:35 +0200 Jens-Peer Kuska wrote:
> > > gr = DensityPlot[Random[], {x, 0, 1}, {y, 0, 1}, PlotPoints -> 128,
> > >     Mesh -> False, Frame -> False];
> > > bm = ImportString[ExportString[gr, "PBM"], "PBM"];
> > 
> > Hier bekomme ich folgende Fehlermeldung:
> > 
> > Transpose::"nmtx": "The first two levels of the one-dimensional list
> > {{}, {}, {}, {}, {}, {}, <<276>>, {}, {}, {}, {}, {}, {}} cannot be
> > transposed.
> 
> Und ein anderes Bitmap-Format als "Portable Bitmap Format" geht nicht
> ?? also z. B. TIFF oder PPM ???

Entschuldigung, ich hatte nicht die richtigen Zeilen oben
angegeben. Tatsächlich hatte ich zunächst Probleme mit ExportString und
ImportString, weil dafür benötigte Binaries dynamisch mit der libc5
verlinkt waren, die bei mir nicht installiert war. Die obige
Fehlermeldung bezog sich aber auf die folgenden Zeilen.

newbm = Transpose[
      Transpose[bm[[1, 1]] /. {255 ..} :> Sequence[]] /. {255 ..} :> 
          Sequence[]];

Das Problem ist, dass die Variable bm offenbar Daten in einem Format
referenziert, bei dem für jedes Pixel ein Array der Form {rot,grün,blau}
angegeben ist. Nach Voransetzen der folgenden Zeile funktioniert Dein
Beispiel ohne Probleme.

bm = bm /. {r_, g_, b_} -> r;

> > Wenn ich den Code zum Laufen bekomme, kann ich die Methoden ja mal
> > vergleichen.
> 
> Was gibt es da zu vergleichen ? Bild in Corel Draw importieren,
> und hinscheiben -- das sind 3-4 Maus-Clicks  ...

Ja, allerdings wollte (das Problem ist nicht mehr ganz so aktuell) ich
viele solcher Grafiken erzeugen, bis ich passende Parameter gefunden
habe. Da lohnt es sich, die Methode zu automatisieren.

> > [Weißer Rand vor und nach Reimport von Raster-Grafik]
> > 
> > rg = Graphics[Raster[Table[Random[], {x, 0, 1, 0.2}, {y, 0, 1, 0.2}]]];
> > Export["/tmp/rg.bmp", rg];
> > rg2 = Import["/tmp/rg.bmp"];
> > Show[GraphicsArray[{{rg2, rg2}}], GraphicsSpacing -> 0];
> 
> Weshalb ich ja auch die Raster[] per Hand in einem Graphics[] Objekt
> plaziert habe. Wieso Du allerdings keine negatives 
> GraphicsSpacing verwendest ist unklar.
 
Das hat zwei Gründe:
1. Ich weiß nicht, wie groß der Rand ist. Ich muss ihn also durch
   Rumprobieren ermitteln.
2. Ich möchte die Grafiken auch mithilfe von Graphics frei
   und exakt positionieren können. Dabei nervt der Rand.

Vielen Dank für die Hilfe.

Felix

PS: To contact me off list don't reply but send mail to "felix.klee" at
the domain "inka.de". Otherwise your email to me might get automatically
deleted!


Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html