[php/gd] border om een png heen

Pagina: 1
Acties:

Onderwerpen


  • Speedener
  • Registratie: September 2000
  • Laatst online: 18-09 12:54
Hoi :w

Ik ben al een tijdje aant ruzie maken met een scriptje, daarom vraag ik jullie maar weer eens :)

Het gaat om mijn iconchanger die ik aan het uitbreiden ben.

Wat ik wil:
Ik heb een png van 60x60 pixels. Hier zet ik de site waarop hij getoont wordt in en het aantal hits op die site. Nu zijn er sommige sites waar het icon/avatar 80, 100, of 120 pixels is. En ik vind het niet mooi als het uitgerekt wordt. dus wat ik wilde is dat er witte border om die 60x60px png heen komt.

Wat ik heb:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  $im = imageCreate($imagesize, $imagesize) or die("Cannot Initialize new GD image stream");

  $im = imageCreateFromPng('./gfx/'.$imagefile.'.png');  
  
// Uitrekenen hoelang wit vierkant moet zijn
  $leng1 = (strlen($imagecount) * 5)+1;
// wit vierkant creëren    
  imagefilledrectangle($im, 0, 51, $leng1, 60, imageColorAllocate($im, 255,255,255));
  
  imageString($im, 1, 1, 52, "{$imagecount}", imageColorAllocate($im, 0, 0, 0));

    
// Uitrekenen hoelang wit vierkant moet zijn
  $leng2 = (strlen($imageabbr) * 5)+1;
// wit vierkant creëren    
  imagefilledrectangle($im, 0, 0, $leng2, 8, imageColorAllocate($im, 255,255,255));
  
  imageString($im, 1, 1, 1, $imageabbr, imageColorAllocate($im, 0, 0, 0));
  
  
  imagePng($im);


Wat ik geprobeerd heb:
Ik heb de volgende functies geprobeerd, maar of ze waren niet de goede, of ik kwam er niet uit hoe het werkte:
http://nl2.php.net/manual/nl/function.imagecopymerge.php
http://nl2.php.net/manual/nl/function.imagefilltoborder.php
En ook nog geprobeerd gewoon de grote aan het begin aan te passen

Zou iemand me op weg kunnen helpen? :>

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Intentionally left blank


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Je kan toch een niet gevuld vierkantje, met een witte rand van 1px dik tekenen, van 0,0 naar 60,60?
http://nl3.php.net/manual/en/function.imagerectangle.php

  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 08-09 21:45

RSpliet

*blink*

kan je het plaatje niet in een mini-divje steken, met een fixed grootte van 60x60?

Begreep m weereens verkeerd :)

[ Voor 20% gewijzigd door RSpliet op 29-09-2004 22:46 ]

Schaadt het niet, dan baat het niet


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat ik zelf zou doen is een wit plaatje maken van de grootte die je meegeeft met een GET-var. Dus stel je geeft in de URL een variabele 'size' mee, met de waarde 80, dan maak je een wit plaatje van 80*80.
Daarop plak je met imagecopymerged() op de goede plaats (wat neerkomt op floor($GET['size'] / 2) - (60 / 2)), en voilà, je hebt wat je hebben wil. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Speedener
  • Registratie: September 2000
  • Laatst online: 18-09 12:54
frickY schreef op 29 september 2004 @ 22:31:
Je kan toch een niet gevuld vierkantje, met een witte rand van 1px dik tekenen, van 0,0 naar 60,60?
http://nl3.php.net/manual/en/function.imagerectangle.php
Wat ik wil is dus dat het er dan ongeveer zo uit gaat zien :
Afbeeldingslocatie: http://develop.speedener.nl/var/gif/avatar.gif

en ik wil dus een png plaatje combineren met een wit vlak van 120 pixels
Seven of Nine schreef op 29 september 2004 @ 22:34:
kan je het plaatje niet in een mini-divje steken, met een fixed grootte van 60x60?
Het moet een image worden heh, dus ik weet niet hoe ik dan met divs aan de gang kan gaan....

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


  • Badeend
  • Registratie: Juli 2000
  • Laatst online: 20-09 19:02
Ik denk dat je wel wat aan imagecopyresampled hebt :) Maak dus eerst een wit plaatje aan van 60 * 60, en gooi dan het plaatje eroverheen (58 * 58, beginnend op 1, 1)

Vast nog wel een andere manier, maar daar komen de anderen dan maar mee :P

edit:
kan het kloppen dat ik het gevoel heb dat ik het niet helemaal heb begrepen? :? 8)7

[ Voor 14% gewijzigd door Badeend op 29-09-2004 22:40 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Omdat ik toch niks te doen heb:
PHP:
1
2
3
4
5
6
7
8
9
10
11
$size = isset($_GET['size']) ? intval($_GET['size']) : 60;
$white = imageColorAllocate($im, 255,255,255);
$plaatje = imagecreatetruecolor($size, $size);

$im = imageCreateFromPng('./gfx/'.$imagefile.'.png');

imagefilledrectangle($plaatje, 0, 0, $size, $size, $white);

imagecopyresampled($plaatje, $im, floor($GET['size'] / 2) - 30, floor($GET['size'] / 2) - 30, 0, 0, 60, 60, 60, 60);

imagePng($plaatje);

Disclaimer: Niet getest. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Speedener
  • Registratie: September 2000
  • Laatst online: 18-09 12:54
NMe84 schreef op 29 september 2004 @ 22:46:
Omdat ik toch niks te doen heb:
PHP:
1
2
3
4
5
6
7
8
9
10
11
$size = isset($_GET['size']) ? intval($_GET['size']) : 60;
$white = imageColorAllocate($im, 255,255,255);
$plaatje = imagecreatetruecolor($size, $size);

$im = imageCreateFromPng('./gfx/'.$imagefile.'.png');

imagefilledrectangle($plaatje, 0, 0, $size, $size, $white);

imagecopyresampled($plaatje, $im, floor($GET['size'] / 2) - 30, floor($GET['size'] / 2) - 30, 0, 0, 60, 60, 60, 60);

imagePng($plaatje);

Disclaimer: Niet getest. :P
Dank je, ik heb hem net af :x

Ik wil graag iederen hartelijk bedanken voor de suggesties :>

PHP:
1
2
3
4
5
6
7
8
9
  $imbasis = imageCreateFromPng('./'.$imagesize.'.png');
  $iminsert = imageCreateFromPng('./gfx/'.$imagefile.'.png');
  
  $dest_x = ( $imagesize / 2 ) - 30;
  $dest_y = ( $imagesize / 2 ) - 30; 

  imageCopyMerge($imbasis, $iminsert, $dest_x, $dest_y, 0, 0, 60, 60, 100); 
  
  imagePng($imbasis );


Moet alleen de cijfertjes er nog in duwen :)


Nog een vraag:
Wat ik nu wel zie is dat het allemaal maar 16 of 256 kleuren is. Is daar nog wat aan te doen?

[ Voor 44% gewijzigd door Speedener op 29-09-2004 23:31 ]

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1