[php] thumbnails genereren -> worden lelijk!!!!

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • xychix
  • Registratie: September 2000
  • Laatst online: 16-09 07:50

xychix

FreeBSD Rules !

Topicstarter
als ik dmv imagecopyresized een plaatje copieer word hij erg lelijk ook de imagecopyresampled is geen oplossing.!

heeft iemand een iedee om dit toch wat netter te krijgen.. ??

btw let niet op de regel if($plaatje_type !="jpeg.....

die staat er nog omdat ik er problemen mee had dat goed af te vangen!

ook wil ik dat de plaatjes in verhouding blijven.. hoe kan ik dat het beste aanpakken ??

1024*756 word nu 100*100
dit zou dan

1024/100 = 102(uit mn hooft dus niet exact!!)
756/100= 76(uit mn hooft dus niet exact!!)

we nemen hier de bovenste want deze heeft de grootste verkleiningsfactor.
dus
100* ( 756/102 ) worden.....
moet ik dit gewoon in php gaan schrijven (kom ik verder wel uit) of kan het op een veel simpeler manier (vertellen aan imageresize dat hij proporties moet bewaren bijvoorbeeld!)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?
if (is_uploaded_file($plaatje))
        {
            if ($plaatje_type != "jpeg" or $plaatje_type == "jpg" or $plaatje_type == "JPEG" or $plaatje_type == "JPG")
            {
                copy($plaatje, $hard_img_dir . $filename);
                $src_img=imagecreatefromjpeg( $hard_img_dir . $filename);

                $dst_img=ImageCreate($tn_imagesize_y,$tn_imagesize_x);

                //if(!ImageCopyResized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,ImageSX($src_img),ImageSY($src_img)))
                if(!imagecopyresampled($dst_img,$src_img,0,0,0,0,100,100,ImageSX($src_img),ImageSY($src_img)))
            {
                echo "ImageCopyResized werkt niet !";
            }
            
            // even ter test de volgende 2 regels laten de plaatjes zien.. 1e = thumbnail.
            ImageJPEG($dst_img);
            //ImageJPEG($src_img);

                ImageJPEG($dst_img,  $hard_img_dir . $tn_filename);
            }
            else
            {
                echo "Er is fout opgetreden bij het verwerken van het plaatje: '$plaatje'!<br>";
            }
?>

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


Acties:
  • 0 Henk 'm!

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 08-09-2022
Op zaterdag 26 januari 2002 20:37 vond Dryw.Filtiarn het volgende in de manual:

ImageCopyResized
(PHP 3, PHP 4 >= 4.0.0)

ImageCopyResized -- Copy and resize part of an image

Description
int imagecopyresized (resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)

ImageCopyResized() copies a rectangular portion of one image to another image. Dst_im is the destination image, src_im is the source image identifier. If the source and destination coordinates and width and heights differ, appropriate stretching or shrinking of the image fragment will be performed. The coordinates refer to the upper left corner. This function can be used to copy regions within the same image (if dst_im is the same as src_im) but if the regions overlap the results will be unpredictable.

See also ImageCopyResampled().
Zie jij iets over het vasthouden van de verhoudingen? Ik niet in ieder geval, dus ik denk dat je gewoon de code moet gebruiken zoals deze hierboven staat.

=( Protected by witchcraft )=


Acties:
  • 0 Henk 'm!

  • xychix
  • Registratie: September 2000
  • Laatst online: 16-09 07:50

xychix

FreeBSD Rules !

Topicstarter
PHP:
1
2
3
<?
                //$dst_img=ImageCreate($tn_imagesize_y,$tn_imagesize_x);
?>

vervangen door
PHP:
1
2
3
<?
            $dst_img=imagecreatetruecolor ($tn_imagesize_y,$tn_imagesize_x);
?>

opgelost !

misschien nog handig voor in search..

by the way is imagecreatetruecolor standaard aanwezig ??

als GDlib meegecopieerd is ?

weet iemand of vevida.nl deze ondersteund !?!

Every failure offers you a new opportunity! | Lokatie database|GoT - Notepad


Acties:
  • 0 Henk 'm!

  • Joror
  • Registratie: Augustus 2001
  • Laatst online: 11-03-2017

Joror

the eternal lurker

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?
    function ImageCopyResampleBicubic ($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)
    {
        /*
        port to PHP by John Jensen July 10 2001 -- original code (in C, for the PHP GD Module) by jernberg@fairytale.se
        */
        for ($i = 0; $i < imagecolorstotal($src_img); $i++)
        {
            // get pallete. Is this algoritm correct?
            $colors = ImageColorsForIndex ($src_img, $i);
            ImageColorAllocate ($dst_img, $colors['red'], $colors['green'], $colors['blue']);
        }

        $scaleX = ($src_w - 1) / $dst_w;
        $scaleY = ($src_h - 1) / $dst_h;

        $scaleX2 = $scaleX / 2.0;
        $scaleY2 = $scaleY / 2.0;

        for ($j = $src_y; $j < $dst_h; $j++)
        {
            $sY = $j * $scaleY;
            for ($i = $src_x; $i < $dst_w; $i++)
            {
                $sX = $i * $scaleX;

                $c1 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX, (int) $sY + $scaleY2));
                $c2 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX, (int) $sY));
                $c3 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX + $scaleX2, (int) $sY + $scaleY2));
                $c4 = ImageColorsForIndex ($src_img, ImageColorAt ($src_img, (int) $sX + $scaleX2, (int) $sY));

                $red = (int) (($c1['red'] + $c2['red'] + $c3['red'] + $c4['red']) / 4);
                $green = (int) (($c1['green'] + $c2['green'] + $c3['green'] + $c4['green']) / 4);
                $blue = (int) (($c1['blue'] + $c2['blue'] + $c3['blue'] + $c4['blue']) / 4);

                $color = ImageColorClosest ($dst_img, $red, $green, $blue);
                ImageSetPixel ($dst_img, $i + $dst_x, $j + $dst_y, $color);
            }
        }
    }
?>

Voor betere scaling : bicubic resampling..

Usage: zelfde..

Hij werkt niet goed bij de randjes als het plaatje even aantal pixels heeft als hoogte/breedte, maar dat zie je bij de meeste plaatjes > 40x40 niet.

Nice-but-how-does-it-do-that: google.com, zoek naar bicubic sampling.

8-)

nada aka zilch, formerly known as zip


Acties:
  • 0 Henk 'm!

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 02-09 19:22

GraasGast

Analogue Heaven

Op zaterdag 26 januari 2002 20:42 schreef xychix het volgende:

[..]

by the way is imagecreatetruecolor standaard aanwezig ??

als GDlib meegecopieerd is ?

weet iemand of vevida.nl deze ondersteund !?!
is strandaard aanwezig, als het GD2 is :)