Avatar billede w13 Novice
20. juni 2010 - 17:54 Der er 3 kommentarer og
1 løsning

imagecreatetruecolor( $imgwidth, $imgheight ) kan max sættes til "400px, 400px"

Hej Eksperter.

Jeg sidder og roder med en kode til at klippe en ellipseform ud af et billede.

Jeg oplever dog, at imagecreatetruecolor( $imgwidth, $imgheight ) højst vil give mig en hvid baggrund på 400px. Jeg synes dog ikke, jeg kan finde det som et kendt problem på Google. Er der nogen, der har erfaring med dette?

Prøv selv med denne kode:


<?php
// Created by NerdsOfTech

// Step 1 - Start with image as layer 1 (canvas)
$img1 =            ImageCreateFromjpeg("test.jpg");
$imgwidth =        imagesx($img1);
$imgheight =    imagesy($img1);
$circlewidth =    400;
$circleheight =    400;
$x =            $imgwidth / 2;
$y =            $imgheight / 2;


// Step 2 - Create a blank image
$img2 = imagecreatetruecolor( $imgwidth, $imgheight );
$bg = imagecolorallocate($img2, 255, 255, 255); // white background
imagefill($img2, 0, 0, $bg);


// Step 3 - Create the ellipse OR circle mask
$e = imagecolorallocate($img2, 0, 0, 0); // black mask color

// Draw a ellipse mask
imagefilledellipse ($img2, $x, $y, $circlewidth, $circleheight, $e);


// Step 4 - Make shape color transparent
imagecolortransparent($img2, $e);


// Step 5 - Merge the mask into canvas with 100 percent opacity
imagecopymerge($img1, $img2, 0, 0, 0, 0, $circlewidth, $circleheight, 100);


// Step 6 - Make outside border color around circle transparent
imagecolortransparent($img1, $bg);


// Step 7 - Output merged image
header("Content-type: image/png"); // output header
imagepng($img1); // output merged image
// Or export to file with:
// imagepng( $img1,'testresult.png' );


// Step 8 - Cleanup memory
imagedestroy($img2); // kill mask first
imagedestroy($img1); // kill canvas last


På forhånd mange tak!

Med venlig hilsen
Tobias
Avatar billede coderdk Praktikant
20. juni 2010 - 18:14 #1
Det er vel fordi at test.jpg er 400x400?
Avatar billede w13 Novice
20. juni 2010 - 18:43 #2
Nej, det er netop 500x550. Og hvis jeg fx tester med et billede på 100x100 bliver resultatet 90x90. Som det fremgår her: http://img691.imageshack.us/img691/6389/testcdh.png
Avatar billede w13 Novice
20. juni 2010 - 19:29 #3
Jeg kan simpelthen ikke gennemskue, hvordan det hænger sammen, men jeg kan se på Google, at mange andre har søgt på "php imagecreatetruecolor size limitation". Dog uden at der kommer noget særlig nyttigt frem.
Avatar billede w13 Novice
20. juni 2010 - 19:47 #4
Nå, jeg fandt denne kode, som virker. Den bruger mange af de samme funktioner, så hvorfor den anden gik galt må vel forblive et uløst mysterium. Men tak for din tid! Hvis du opretter et svar, kan vi dele pointene! :)

------------------

Min fungerende kode:

<?php
// load the image you want to crop
$image =            imagecreatefromjpeg('test.jpg');

$image_width =        imagesx($image);
$image_height =        imagesy($image);

$circle_width =        200;
$circle_height =    300;

// create masking
$mask = imagecreatetruecolor($image_width, $image_height);
$transparent = imagecolorallocate($mask, 255, 255, 255);
imagecolortransparent($mask, $transparent);
imagefilledellipse($mask, $image_width/2, $image_height/2, $circle_width, $circle_height, $transparent);

imagecopymerge($image, $mask, 0, 0, 0, 0, $image_width, $image_height, 100);
imagecolortransparent($image, $transparent);
imagefill($image, 0, 0, $transparent);

// output and free memory
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
imagedestroy($mask);
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester