Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Bild-Optionen: Drop Shadow mit Transparenz

    Ironbone

    • Neu im Forum
    • Beiträge: 43
    • Geschlecht:
    Bild-Optionen: Drop Shadow mit Transparenz
    am: 23. April 2011, 14:43:52
    Hallo zusammen,

    bin jetzt fast 2 Tage über folgendes Problem am grübeln:

    Habe in den Bild-Optionen im Backend den "Artikel-Thumbnails:Drop-Shadow" mit den Standard-Werten konfiguriert.
    Läuft auch gut, allerdings ist mein maincontent-Container halbtransparent, so das ein Hintergrundbild durchscheint.
    Jetzt sieht man natürlich den weißen Rahmen im Schatten des Bildes.
    Habe dann versucht die Farbe "transparent" zu verwenden, was natürlich nicht funktioniert, weil man HEX-Zahlen eingeben muss.

    Nun zu meiner Frage, ist es irgendwie möglich diesen Umstand zu ändern?
    Das heißt, entweder nicht HEX Farben zu zulassen oder einen HEX-Wert für "transparent" einzugeben?

    Habe inzwischen in der image_manipulator_GD2.php
    imageallocatealpha hinzugefügt und am Ende auf png umgestellt.

    Aber irgend etwas läuft immer noch falsch. Es werden keine png's erstellt. Bekomme jedoch auch keinen Fehlercode.

    Werte aus den Bild-Optionen im Backend: (3,333333,FFFFFF,0)

    Hier mal der Code in meiner "/admin/includes/classes/image_manipulator_GD2.php":

    Code: PHP  [Auswählen]

    <?php
    /* ----------------------------------------------------------------------------------------
       $Id: image_manipulator_GD2.php 950 2005-05-14 16:45:21Z mz $  

       XT-Commerce - community made shopping
       http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))

       Copyright (c) 2003 XT-Commerce

       -----------------------------------------------------------------------------------------
       Third Party contributions:
       class thumbnail - proportional thumbnails with manipulations by mark@teckis.com
       You find more great scripts and some information at www.teckis.com

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/

    defined( '_VALID_XTC' ) or die( 'Direct Access to this location is not allowed.' );
    class image_manipulation
            {

            function image_manipulation($resource_file, $max_width, $max_height, $destination_file="", $compression=IMAGE_QUALITY, $transform="")
                    {
                    $this->a = $resource_file;      // image to be thumbnailed
                    $this->c = $transform;
                    $this->d = $destination_file;   // thumbnail saved to
                    $this->e = $compression;        // compression ration for jpeg thumbnails
                    $this->m = $max_width;
                    $this->n = $max_height;

                    $this->compile();
                    if($this->c !== "")
                            {
                            $this->manipulate();
                            $this->create();
                            }
                    }
            function compile()
                    {
                    $this->h = getimagesize($this->a);
                    if(is_array($this->h))
                            {
                            $this->i = $this->h[0];
                            $this->j = $this->h[1];
                            $this->k = $this->h[2];

                if($this->m == '0'){
                   $this->z = ($this->j / $this->n);
                   $this->m = ($this->i / $this->z);
                }

                            $this->o = ($this->i / $this->m);
                            $this->p = ($this->j / $this->n);
                            $this->q = ($this->o> $this->p) ? $this->m : round($this->i / $this->p); // width
                            $this->r = ($this->o> $this->p) ? round($this->j / $this->o) : $this->n; // height
                            }
                    $this->s = ($this->k <4) ? ($this->k <3) ? ($this->k <2) ? ($this->k <1) ? Null : imagecreatefromgif($this->a) : imagecreatefromjpeg($this->a) : imagecreatefrompng($this->a) : Null;
                    if($this->s !== Null)
                            {
                            $this->t = imagecreatetruecolor($this->q, $this->r); // created thumbnail reference
                            $this->u = imagecopyresampled($this->t, $this->s, 0, 0, 0, 0, $this->q, $this->r, $this->i, $this->j);
                            }
                    }

            function hex2rgb($hex_value)
                    {
                    $this->decval = hexdec($hex_value);
                    return $this->decval;
                    }
            function bevel($edge_width=10, $light_colour="FFFFFF", $dark_colour="000000")
                    {
                    $this->edge = $edge_width;
                    $this->dc = $dark_colour;
                    $this->lc = $light_colour;
                    $this->dr = $this->hex2rgb(substr($this->dc,0,2));
                    $this->dg = $this->hex2rgb(substr($this->dc,2,2));
                    $this->db = $this->hex2rgb(substr($this->dc,4,2));
                    $this->lr = $this->hex2rgb(substr($this->lc,0,2));
                    $this->lg = $this->hex2rgb(substr($this->lc,2,2));
                    $this->lb = $this->hex2rgb(substr($this->lc,4,2));
                    $this->dark = @imagecreate($this->q,$this->r);
                    $this->nadir = @imagecolorallocate($this->dark,$this->dr,$this->dg,$this->db);
                    $this->light = @imagecreate($this->q,$this->r);
                    $this->zenith = @imagecolorallocate($this->light,$this->lr,$this->lg,$this->lb);
                    for($this->pixel = 0; $this->pixel <$this->edge; $this->pixel++)
                            {
                            $this->opac =  100 - (($this->pixel+1) * (100 / $this->edge));
                            @ImageCopyMerge($this->t,$this->light,$this->pixel,$this->pixel,0,0,1,$this->r-(2*$this->pixel),$this->opac);
                            @ImageCopyMerge($this->t,$this->light,$this->pixel-1,$this->pixel-1,0,0,$this->q-(2*$this->pixel),1,$this->opac);
                            @ImageCopyMerge($this->t,$this->dark,$this->q-($this->pixel+1),$this->pixel,0,0,1,$this->r-(2*$this->pixel),max(0,$this->opac-10));
                            @ImageCopyMerge($this->t,$this->dark,$this->pixel,$this->r-($this->pixel+1),0,0,$this->q-(2*$this->pixel),1,max(0,$this->opac-10));
                            }
                    @ImageDestroy($this->dark);
                    @ImageDestroy($this->light);
                    }
            function greyscale($rv=38, $gv=36, $bv=26)
                    {
                    $this->rv = $rv;
                    $this->gv = $gv;
                    $this->bv = $bv;
                    $this->rt = $this->rv+$this->bv+$this->gv;
                    $this->rr = ($this->rv == 0) ? 0 : 1/($this->rt/$this->rv);
                    $this->br = ($this->bv == 0) ? 0 : 1/($this->rt/$this->bv);
                    $this->gr = ($this->gv == 0) ? 0 : 1/($this->rt/$this->gv);
                    for( $this->dy = 0; $this->dy <= $this->r; $this->dy++ )
                            {
                            for( $this->dx = 0; $this->dx <= $this->q; $this->dx++ )
                                    {
                                    $this->pxrgb = @imagecolorat($this->t, $this->dx, $this->dy);
                                    $this->rgb = @ImageColorsforIndex( $this->t, $this->pxrgb );
                                    $this->newcol = ($this->rr*$this->rgb['red'])+($this->br*$this->rgb['blue'])+($this->gr*$this->rgb['green']);
                                    $this->setcol = @ImageColorAllocate( $this->t, $this->newcol, $this->newcol, $this->newcol );
                                    @imagesetpixel( $this->t, $this->dx, $this->dy, $this->setcol );
                                    }
                            }
                    }
            function ellipse($bg_colour="FFFFFF")
                    {
                    $this->bgc = $bg_colour;
                    $this->br = $this->hex2rgb(substr($this->bgc,0,2));
                    $this->bg = $this->hex2rgb(substr($this->bgc,2,2));
                    $this->bb = $this->hex2rgb(substr($this->bgc,4,2));
                    $this->dot = @ImageCreate(6,6);
                    $this->dot_base = @ImageColorAllocate($this->dot, $this->br, $this->bg, $this->bb);
                    $this->zenitha = @ImageColorClosest($this->t, $this->br, $this->bg, $this->bb);
                    for($this->rad = 0;$this->rad<6.3;$this->rad+=0.005)
                            {
                            $this->xpos = floor(($this->q)+(sin($this->rad)*($this->q)))/2;
                            $this->ypos = floor(($this->r)+(cos($this->rad)*($this->r)))/2;
                            $this->xto = 0;
                            if($this->xpos>= ($this->q/2))
                                    {
                                    $this->xto = $this->q;
                                    }
                            @ImageCopyMerge($this->t,$this->dot,$this->xpos-3,$this->ypos-3,0,0,6,6,30);
                            @ImageCopyMerge($this->t,$this->dot,$this->xpos-2,$this->ypos-2,0,0,4,4,30);
                            @ImageCopyMerge($this->t,$this->dot,$this->xpos-1,$this->ypos-1,0,0,2,2,30);
                            @ImageLine($this->t,$this->xpos,($this->ypos),$this->xto,($this->ypos),$this->zenitha);
                            }
                    @ImageDestroy($this->dot);
                    }
            function round_edges($edge_rad=3, $bg_colour="FFFFFF", $anti_alias=1)
                    {
                    $this->er = $edge_rad;
                    $this->bgd = $bg_colour;
                    $this->aa = min(3,$anti_alias);
                    $this->br = $this->hex2rgb(substr($this->bgd,0,2));
                    $this->bg = $this->hex2rgb(substr($this->bgd,2,2));
                    $this->bb = $this->hex2rgb(substr($this->bgd,4,2));
                    $this->dot = @ImageCreate(1,1);
                    $this->dot_base = @ImageColorAllocate($this->dot, $this->br, $this->bg, $this->bb);
                    $this->zenitha = @ImageColorClosest($this->t, $this->br, $this->bg, $this->bb);
                    for($this->rr = 0-$this->er; $this->rr <= $this->er; $this->rr++)
                            {
                            $this->ypos = ($this->rr <0) ? $this->rr+$this->er-1 : $this->r-($this->er-$this->rr);
                            for($this->cr = 0-$this->er; $this->cr <= $this->er; $this->cr++)
                                    {
                                    $this->xpos = ($this->cr <0) ? $this->cr+$this->er-1 : $this->q-($this->er-$this->cr);
                                    if($this->rr !== 0 || $this->cr !== 0)
                                            {
                                            $this->d_dist = round(sqrt(($this->cr*$this->cr)+($this->rr*$this->rr)));
                                            $this->opaci = ($this->d_dist <$this->er-$this->aa) ? 0 : max(0, 100-(($this->er-$this->d_dist)*33));
                                            $this->opaci = ($this->d_dist> $this->er) ? 100 : $this->opaci;
                                            @ImageCopyMerge($this->t,$this->dot,$this->xpos,$this->ypos,0,0,1,1,$this->opaci);
                                            }
                                    }
                            }
                    @imagedestroy($this->dot);
                    }
            function merge($merge_img="", $x_left=0, $y_top=0, $merge_opacity=70, $trans_colour="FF0000")
                    {
                    $this->mi = $merge_img;
                    $this->xx = ($x_left <0) ? $this->q+$x_left : $x_left;
                    $this->yy = ($y_top <0) ? $this->r+$y_top : $y_top;
                    $this->mo = $merge_opacity;
                    $this->tc = $trans_colour;
                    $this->tr = $this->hex2rgb(substr($this->tc,0,2));
                    $this->tg = $this->hex2rgb(substr($this->tc,2,2));
                    $this->tb = $this->hex2rgb(substr($this->tc,4,2));
                    $this->md = @getimagesize($this->mi);
                    $this->mw = $this->md[0];
                    $this->mh = $this->md[1];
                    $this->mm = ($this->md[2] <4) ? ($this->md[2] <3) ? ($this->md[2] <2) ? imagecreatefromgif($this->mi) : imagecreatefromjpeg($this->mi) : imagecreatefrompng($this->mi) : Null;
                    for($this->ypo = 0; $this->ypo <$this->mh; $this->ypo++)
                            {
                            for($this->xpo = 0; $this->xpo <$this->mw; $this->xpo++)
                                    {
                                    $this->indx_ref = @imagecolorat($this->mm, $this->xpo, $this->ypo);
                                    $this->indx_rgb = @imagecolorsforindex($this->mm, $this->indx_ref);
                                    if(($this->indx_rgb['red'] == $this->tr) && ($this->indx_rgb['green'] == $this->tg) && ($this->indx_rgb['blue'] == $this->tb))
                                            {
                                            // transparent colour, so ignore merging this pixel
                                            }
                                    else
                                            {
                                            @imagecopymerge($this->t, $this->mm, $this->xx+$this->xpo, $this->yy+$this->ypo, $this->xpo, $this->ypo, 1, 1, $this->mo);
                                            }
                                    }
                            }
                    @imagedestroy($this->mm);
                    }
            function frame($light_colour="FFFFFF", $dark_colour="000000", $mid_width=4, $frame_colour = "" )
                    {
                    $this->rw = $mid_width;
                    $this->dh = $dark_colour;
                    $this->lh = $light_colour;
                    $this->frc = $frame_colour;
                    $this->fr = $this->hex2rgb(substr($this->dh,0,2));
                    $this->fg = $this->hex2rgb(substr($this->dh,2,2));
                    $this->fb = $this->hex2rgb(substr($this->dh,4,2));
                    $this->gr = $this->hex2rgb(substr($this->lh,0,2));
                    $this->gg = $this->hex2rgb(substr($this->lh,2,2));
                    $this->gb = $this->hex2rgb(substr($this->lh,4,2));
                    $this->zen = @ImageColorClosest($this->t, $this->gr, $this->gg, $this->gb);
                    $this->nad = @ImageColorClosest($this->t, $this->fr, $this->fg, $this->fb);
                    $this->mid = ($this->frc == "") ? @ImageColorClosest($this->t, ($this->gr+$this->fr)/2, ($this->gg+$this->fg)/2, ($this->gb+$this->fb)/2) : ImageColorClosest($this->t, $this->hex2rgb(substr($this->frc,0,2)), $this->hex2rgb(substr($this->frc,2,2)), $this->hex2rgb(substr($this->frc,4,2)));
                    @imageline($this->t, 0, 0, $this->q, 0, $this->zen);
                    @imageline($this->t, 0, 0, 0, $this->r, $this->zen);
                    @imageline($this->t, $this->q-1, 0, $this->q-1, $this->r, $this->nad);
                    @imageline($this->t, 0, $this->r-1, $this->q, $this->r-1, $this->nad);
                    @imageline($this->t, $this->rw+1, $this->r-($this->rw+2), $this->q-($this->rw+2), $this->r-($this->rw+2), $this->zen); // base in
                    @imageline($this->t, $this->q-($this->rw+2), $this->rw+1, $this->q-($this->rw+2), $this->r-($this->rw+2), $this->zen); // right in
                    @imageline($this->t, $this->rw+1, $this->rw+1, $this->q-($this->rw+1), $this->rw+1, $this->nad);
                    @imageline($this->t, $this->rw+1, $this->rw+1, $this->rw+1, $this->r-($this->rw+1), $this->nad);
                    for($this->crw = 0; $this->crw <$this->rw; $this->crw++)
                            {
                            @imageline($this->t, $this->crw+1, $this->crw+1, $this->q-($this->crw+1), $this->crw+1, $this->mid); // top
                            @imageline($this->t, $this->crw+1, $this->r-($this->crw+2), $this->q-($this->crw+1), $this->r-($this->crw+2), $this->mid); // base
                            @imageline($this->t, $this->crw+1, $this->crw+1, $this->crw+1, $this->r-($this->crw+1), $this->mid); //left
                            @imageline($this->t, $this->q-($this->crw+2), $this->crw, $this->q-($this->crw+2), $this->r-($this->crw+1), $this->mid); // right
                            }
                    }
            function drop_shadow($shadow_width, $shadow_colour="000000", $background_colour="FFFFFF", $background_trans="0")        //, $background_trans="0"
                    {
                    $this->sw = $shadow_width;
                    $this->sc = $shadow_colour;
                    $this->sbr = $background_colour;
                    $this->sbt = $background_trans;                                                                                                                                                 //full
                    $this->sr = $this->hex2rgb(substr($this->sc,0,2));
                    $this->sg = $this->hex2rgb(substr($this->sc,2,2));
                    $this->sb = $this->hex2rgb(substr($this->sc,4,2));
                    $this->sbrr = $this->hex2rgb(substr($this->sbr,0,2));
                    $this->sbrg = $this->hex2rgb(substr($this->sbr,2,2));
                    $this->sbrb = $this->hex2rgb(substr($this->sbr,4,2));
                    $this->dot = @ImageCreate(1,1);
                    $this->dotc = @ImageColorAllocate($this->dot, $this->sr, $this->sg, $this->sb);
                    $this->v = @imagecreatetruecolor($this->q, $this->r);
                    $this->sbc = @imagecolorallocatealpha($this->v, $this->sbrr, $this->sbrg, $this->sbrb, $this->sbt);     //alpha
                    $this->rsw = $this->q-$this->sw;
                    $this->rsh = $this->r-$this->sw;
                    @imagefill($this->v, 0, 0, $this->sbc);
                    for($this->sws = 0; $this->sws <$this->sw; $this->sws++)
                            {
                            $this->s_opac = max(0, 90-($this->sws*(100 / $this->sw)));
                            for($this->sde = $this->sw; $this->sde <$this->rsh+$this->sws+1; $this->sde++)
                                    {
                                    @imagecopymerge($this->v, $this->dot, $this->rsw+$this->sws, $this->sde, 0, 0, 1, 1, $this->s_opac);
                                    }
                            for($this->bse = $this->sw; $this->bse <$this->rsw+$this->sws; $this->bse++)
                                    {
                                    @imagecopymerge($this->v, $this->dot, $this->bse, $this->rsh+$this->sws, 0, 0, 1, 1, $this->s_opac);
                                    }
                            }
                    @imagecopyresampled($this->v, $this->t, 0, 0, 0, 0, $this->rsw, $this->rsh, $this->q, $this->r);
                    @imagecopyresampled($this->t, $this->v, 0, 0, 0, 0, $this->q, $this->r, $this->q, $this->r);
                    @imagedestroy($this->v);
                    @imagedestroy($this->dot);
                    }
            function motion_blur($num_blur_lines, $background_colour="FFFFFF")
                    {

                    $this->nbl = $num_blur_lines;
                    $this->shw = ($this->nbl*2)+1;
                    $this->bk = $background_colour;
                    $this->kr = $this->hex2rgb(substr($this->bk,0,2));
                    $this->kg = $this->hex2rgb(substr($this->bk,2,2));
                    $this->kb = $this->hex2rgb(substr($this->bk,4,2));
                    $this->w = @imagecreatetruecolor($this->q, $this->r);
                    $this->shbc = @imagecolorallocate($this->w, $this->kr, $this->kg, $this->kb);
                    $this->rsw = $this->q-$this->shw;
                    $this->rsh = $this->r-$this->shw;
                    @imagefill($this->w, 0, 0, $this->shbc);
                    $this->rati = $this->r / $this->rsh;
                    for($this->lst = 0; $this->lst <$this->nbl; $this->lst++)
                            {
                            $this->opacit = max(0, 70-($this->lst*(85 / $this->nbl)));
                            for($this->yst = 0; $this->yst <$this->rsh; $this->yst++)
                                    {
                                    @imagecopymerge($this->w, $this->t, $this->rsw+(2*$this->lst)+1, $this->yst+(2*$this->lst)+2, $this->q-1, $this->yst*$this->rati, 1, 1, $this->opacit);
                                    }
                            for($this->xst = 0; $this->xst <$this->rsw; $this->xst++)
                                    {
                                    @imagecopymerge($this->w, $this->t, $this->xst+(2*$this->lst)+1, $this->rsh+(2*$this->lst)+1, $this->xst*$this->rati, $this->r-1, 1, 1, $this->opacit);
                                    }
                            }
                    @imagecopyresampled($this->w, $this->t, 0, 0, 0, 0, $this->rsw, $this->rsh, $this->q, $this->r);
                    @imagecopyresampled($this->t, $this->w, 0, 0, 0, 0, $this->q, $this->r, $this->q, $this->r);
                    @imagedestroy($this->w);
                    }
            function manipulate()
                    {
                    if($this->c !== "" && $this->s !== Null)
                            {
                            eval("\$this->maniparray = array(".$this->c.");");
                            foreach($this->maniparray as $manip)
                                    {
                                    eval("\$this->".$manip.";");
                                    }
                            }
                    }
            function create()
                    {
                    if($this->s !== Null)
                            {
                            if($this->d !== "")
                                    {
                                    ob_start();
                                    imagepng($this->t, $this->d,0,NULL);    //jpeg  $this->e     imagepng($image,$file_location,0,NULL);
                                    ob_end_clean();
                                    }

                            imagedestroy($this->s);
                            imagedestroy($this->t);
                            }
                    }
            }
    ?>
     
    Vielleicht kennt ja wer 'nen Trick.

    Gruß Olly



    Linkback: https://www.modified-shop.org/forum/index.php?topic=12496.0
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
    2 Antworten
    2188 Aufrufe
    04. November 2010, 18:11:17 von Tomcraft
    1 Antworten
    2233 Aufrufe
    03. Januar 2011, 15:33:12 von Tomcraft
    3 Antworten
    2104 Aufrufe
    12. November 2010, 08:55:34 von rattenfänger
    2 Antworten
    1267 Aufrufe
    04. Mai 2020, 09:59:54 von Hetfield