imageline problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • bruno123
    antwortet
    Also:
    ich will dass der User ein Bild uploaded. Davon soll er einen Ausschnitt
    wählen. Daraus wird ein Thumb erzeugt und in z.B. 80x120, je nach
    Auswahl, dargestellt. Mit den Zoomfaktor $mag kann er die Vergröserung/
    Verkleinerung einstellen. Das klappt auch alles.
    Jetzt mein Problem:
    Wie erzeuge ich einen Rahmen im upgeloadeten Bild, der dem User zeigt,
    welchen Teil er gerade in der Thumbvorschau sieht.

    Den Origin setzt das Script richtig. Die Schwierigkeit liegt darin, den
    angezeigten Rahmen mit den Dimensionen des Thumbs bzw des darin angezeigten Ausschnittes zu verbinden.
    Ich bekomme immer einen 80x120 Rahmen, obwohl das nicht mit dem
    angezeigten Ausschnit übereinstimmt.
    Mit dem Vergrösserungsfaktor stelle ich ja einen grösseren als den
    angezeigten Ausschnitt ein (in der aktuellen Einstellung des Links )

    Das mit imagline=>imagerectangle klappt. Danke!
    Zuletzt geändert von bruno123; 17.05.2004, 07:27.

    Einen Kommentar schreiben:


  • Wurzel
    antwortet
    1. eine gerade linie ist doch auch nur ein rechteck => imagefilledrectangle()
    2. versteh nicht wirklich deine frage

    Einen Kommentar schreiben:


  • bruno123
    antwortet
    [GD]

    Stimmt!
    Ich habe es hinbekommen...
    Nur das die Linienstärke bei imageline nicht definierbar ist...
    Gibt es nicht etwas anderes? Was etwas eleganter ist?
    Ohne mehrmals 1 Linie zu zeichnen?
    Ich dachte an:

    Bildgrösse ermitteln, check ob Landscape oder Portrait, 1% von längster
    Seite errechnen und einen Rahmen ziehen mit dieser "Strichstärke" in der
    Dimension des Thumbnails.

    Problem hierbei:
    Es wird ein Bildausschnitt mit imagecopyresize gemacht.Der ist
    quadratisch wegen der verzerrung und wird je nach vergrösserungsfaktor
    $mag gemacht. Dann wird ein Bild gemacht mit den Massen des Thumbnails und der Bildauschnitt mit imagecopy eingefügt.
    Wenn ich jetzt die Masse des Thumbs auf mein Originalbild lege, um dem User zu zeigen welchen Ausschnitt er hat, so wird das mit den Massen des Thumbs gemacht, also es stimmt nur der Anfangspunkt (Origin).
    Es ist irgendwo ein Denkfehler...



    Hat jemand so etwas schon mal gemacht oder weiss wie es geht?

    Ich bin ratlos...

    Bruno

    Einen Kommentar schreiben:


  • Wurzel
    antwortet
    versuchs mal damit:
    PHP-Code:
    $borderColor imagecolorallocate($can_img,0,0,0); 
    ausserdem musst du für die linie kein neues image generieren, die kannst du direkt in die andere source malen.

    Einen Kommentar schreiben:


  • bruno123
    hat ein Thema erstellt imageline problem.

    imageline problem

    Hi,

    ich sitze hier an einer kniffligen Aufgabe:

    Es soll von einem Bild ein Ausschnitt bestimmt werden (á la Passepartout).
    Damit wird dann ein neues Bild generiert. Man kann eine Vergrösserung
    einstellen ,die Grösse des neuen Bildes und die Startpunkte des
    Ausschnittes. Alles klappt wunderbar.
    Ich will jetzt nur noch einen Rahmen in der Kopie des Originalbildes haben,
    um dem User anzuzeigen, welchen Ausschnitt er gerade gewählt hat.
    Daran scheitere ich gerade.
    Alles andere habe ich dank RTFM hinbekommen, aber nun hapert es an
    meinen Ideen.

    Das Script macht keinen Rahmen! Ich bekomme es nicht hin.


    So sieht es bis jetzt aus:

    http://www.phantasmedia.de/test/bild...0&tx=80&ty=120

    Und das ist der (im wachsen befindliche) Code:
    Ich habe Ihn so geändert, dass er erst mal funzt, aber keinen Rahmen
    zeichnet. Wenn ich das probiere, klappt nix mehr.

    PHP-Code:
    $generalsrc=$image//the image to resample, resize and iconaize


    $abc imagecreatefromjpeg("$generalsrc"); 
    //$final_thumbwidth =round((imagesx($abc) / $mag)-"0.1");
    $final_thumbwidth =$mag;
    //$final_thumbwidth = round((imagesx($abc))-"0. 1");
    $final_thumbheight $final_thumbwidth;

    $def imagecreatetruecolor($final_thumbwidth$final_thumbheight); 
    $src_mx round((imagesx($abc) / 2)-"0.1"); // middle x point of the image
    $src_my round((imagesy($abc) / 2)-"0.1"); // middle y point of the image
    $src_x = ($src_mx 2);
    $src_y = ($src_my 2);
    $src_sq = ($src_x >= $src_y)?$src_y:$src_x//used to define the best size for a square cut of the image
    $pl = ($src_x >= $src_y)?"1":"2"//define if the image is portait or landscape
    $strt_pntx = ($pl=="1")?round(($src_x-$x)-"0. 1"):round(($src_y-$y)-"0. 1");  //defines the x start point
    $strt_pnty = ($pl=="2")?round(($src_x-$x)-"0. 1"):round(($src_y-$y)-"0. 1");  //defines the y start point
    //$strt_pntx = ($pl=="1")?round(($src_mx-$x)-"0. 1"):round(($src_my-$y)-"0. 1");  //defines the x start point
    //$strt_pnty = ($pl=="2")?round(($src_mx-$x)-"0. 1"):round(($src_my-$y)-"0. 1");  //defines the y start point

    imagecopyresized($def$abc00$strt_pntx$strt_pnty$final_thumbwidth$final_thumbheight$src_sq$src_sq);

    //$overlay_img = imagecreatefromPNG("button_edit.png"); //NOTE use png for this
    //$src_w = ImageSX($overlay_img);
    //$src_h  = ImageSY($overlay_img);
    //$src_w = 80;
    //$src_h  = 120;
    $src_w $tx;
    $src_h  $ty;

    $can_img imagecreatetruecolor ($src_w$src_h);
    //$bg_img = imagecreatetruecolor ($src_w, $src_h);
    //$black = imagecolorallocate ($bg_img, 0, 0, 0);
    //ImageColorTransparent($bg_img , $black);
    $borderColor=255;

           
    imageline($can_img,$src_x-$x,$src_y-$y,$src_x-$x+$tx,$src_y-$y,$borderColor);
           
    imageline($can_img,$src_x-$x+$tx,$src_y-$y,$src_x-$x+$tx,$src_y-$y+$ty,$borderColor);
           
    imageline($can_img,$src_x-$x+$tx,$src_y-$y+$ty,$src_x-$x,$src_y-$y+$ty,$borderColor);
           
    imageline($can_img,$src_x-$x,$src_y-$y+$ty,$src_x-$x,$src_y-$y,$borderColor);
           
    imagecopy($can_img$def0,0,0,0$x$y);
    //imagecopymerge($can_img, $overlay_img , 0,0,0,0, ImageSX($overlay_img), ImageSY($overlay_img),100); //Imagecopy won't work, you must used imagecopymerge
    //imagedashedline ( $can_img, $src_x-$x, $src_y-$y, $src_x-$x, $src_x-$x, 200);

    imagejpeg($can_img,"merge_$generalsrc",100);
    //imagejpeg($def,"merge2_$generalsrc",100);

    //imagedestroy($overlay_img);
    imagedestroy($can_img);
    imagedestroy($abc); 
    imagedestroy($def); 

    print 
    "<HTML><HEAD><TITLE>test</TITLE></HEAD><BODY>
    original:<hr><img src=\"
    $generalsrc\" width=\"300\"><br><br><br>new:<hr><img src=\"merge_$generalsrc\">
    <br>width = 
    $src_x
    <br>height = 
    $src_y
    <br>mdlw = 
    $src_mx
    <br>mdlh = 
    $src_my
    <br>sqr = 
    $src_sq
    <br>pl = 
    $pl
    <br>start point x = 
    $strt_pntx
    <br>start point y = 
    $strt_pnty
    </BODY></HTML>"

    Wenn jemand eine Idee hat.... nur raus damit! Ich bin für alle
    (konstruktiven) Anregungen dankbar.

    P.S. mit LESEN kam ich bis hier....

    Danke
    Bruno
Lädt...
X