[PHP] GD-library => 2 images mogelijk?

Pagina: 1
Acties:
  • 122 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi iedereen,

Ik heb me de voorbije dagen bezig gehouden met de GD-library van PHP.
Daarmee kan ik dus text op een afbeelding zetten en dergelijke.
Maar nu loop ik tegen beperking aan denk ik...
Ik wil namelijk een 2de image toevoegen.

Dus x-positie van 2de image heeft de waarde 421 (lengte van m'n eerste afbeelding)
=> bedoeling is dat de 2de image rechts tegen de 1ste image plakt.

Ik heb hiermee al uren gespeeld, maar het lukt me niet.
Weten jullie of dit gewoon onmogelijk is of dat er toch ergens een manier moet bestaan?

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 21-09 17:49

ripexx

bibs

Als ik even snel kijk naar de functies uit de GD-lib, dan zie ik zoiets staan:
magecopymerge — Copy and merge part of an image
Description
bool imagecopymerge ( resource $dst_im, resource $src_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_w, int $src_h, int $pct )

Copy a part of src_im onto dst_im starting at the x,y coordinates src_x, src_y with a width of src_w and a height of src_h. The portion defined will be copied onto the x,y coordinates, dst_x and dst_y.

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Maar nu loop ik tegen beperking aan denk ik...
daar maak je een denkfout..
je denkt dat je tegen ene beperking aanloopt en je opent een topic... WAAROM controleer je dat dan nie even eerst?

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Image maken met een breedte van image1+image2, daarna met imagecopymerge() de 2 afbeeldingen erin zetten. Het is vrij eenvoudig en snel te doen.

[ Voor 16% gewijzigd door AtleX op 06-05-2007 13:32 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
AtleX schreef op zondag 06 mei 2007 @ 13:27:
Image maken met een breedte van image1+image2, daarna met imagecopymerge() de 2 afbeeldingen erin zetten. Het is vrij eenvoudig en snel te doen.
Thanks, dit is precies wat ik nodig heb!
Probleem is dat mijn achtergrond moet scalen naar gelang de grootte van m'n tekst.
Dat lukt op zich allemaal perfect, maar de imageCopyMerge-functie doet het niet perfect denk ik.
Ik geef als laatste argument duidelijk 100 mee, zodat de achterliggende image er niet door mag komen.

De achtergrond is een soort van canvas dat ik bereken op voorhand:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
//variabelen setten
$padImage = "assets/gfx/header/header_logo.jpg";
$padBg = "assets/gfx/header/header_bg50px.jpg";
$size = imagettfbbox($grootte, 0, "VERDANA", $titel);
$xsize = abs($size[0]) + abs($size[2]);
$ysize = abs($size[5]) + abs($size[1]);
$imagesize = getimagesize($padImage);
$bgsize = getimagesize($padBg);
$aantalBg = round(($xsize / $bgsize[0]), 0) + 1;
$breedte = ($aantalBg * $bgsize[0]) + $imagesize[0];

//canvasgrootte bepalen
$img = imagecreate($breedte, $imagesize[1]);

Die is dus standaard volledig zwart, maar dat maakte me in eerste instantie niet uit, want er komt links 1 afbeelding al voor en de rest van de ruimte wordt opgevuld door een soort van repeating image per 50 pixels => 50px, anders teveel load op de server :)

Maar als ik dan m'n afbeelding op de achtergrond plak, komt de achtergrond er toch nog door:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//images inladen + the shizzle
$image = imagecreatefromjpeg($padImage);
ImageCopyMerge($img, $image, 0, 0, 0, 0, $imagesize[0], $imagesize[1], 100);
$bg = imagecreatefromjpeg($padBg);
for($i = 0; $i <= $aantalbg; $i++){
    ImageCopyMerge($img, $bg, $i, 0, 0, 0, $bgsize[0], $bgsize[1], 100);
}

//text plaatsen
$textleftpos = round($imagesize[0] + (($breedte - $imagesize[0]) / 2));
$texttoppos = round(($imagesize[1] + $ysize) / 2);
$white = ImageColorAllocate($img, 255,255,255);
imagettftext($img, $grootte, 0, $textleftpos, $texttoppos, $white, "VERDANA", $titel);
header("Content-type: image/jpeg");
imagejpeg($img);
imagedestroy($img);


Weten jullie waarom die 100 geen effect heeft? :s