kleine en grote.
Ik heb een vast formaat namelijk 531 breed en 550 hoog.
Ik wil een plaatje maken, en als van het originele plaatje de hoogte groter is als 531, dan moet hij hem rationeel verkleinen naar maximaal 531. Als dat de breedte ook groter is als 550 hetzelfde verhaal.
Ik wil de ratio houden, maar ze moeten alle2 passen in het vlak en dan ook nog gecentreerd.
Als een plaatje bij 100px hoog is, moet deze niet aan de top vastzitten, maar verticaal aligned worden.
De code hieronder doet het wel aardig, alleen als het originele plaatje een zwarte kleur heeft en ik maak het vaste vlak als een plaatje met een witte achtergrond(255, 255, 255), dan maakt hij het zwart in het plaatje ook lelijk wit. Ziet er niet meer uit.
Weet iemand hoe is dit het best kan bereiken? Het liefst zonder imagick.
$newWidth = 531;
$newHeight = 550;
$url = 'D:\websites\jakarta-eventsnew\images\events\1\indobuildtech-expo-2020.jpg';
$destdir = 'D:\websites\jakarta-eventsnew\images\events\1\braakwater.jpg';
// download and create gd image
$image = ImageCreateFromString(file_get_contents($url));
$width = ImageSX($image);
$height = ImageSY($image);
$coefficient = $newHeight / $height;
if ( $width > $newWidth) {
$coefficient = $newWidth / $width;
} else
if ($height > $newHeight ) {
$coefficient = $newHeight / $height;
}
// if (($target_width / $width) > $coefficient) { $coefficient = $target_width / $width; }
// create image
$output = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($output, $image, 0, $height * $coefficient, 0, 0, $width * $coefficient, $height * $coefficient, $width, $height);
$bg_color = imagecolorallocate ($output, 255, 255, 255);
imagefill($output, 0, 0, $bg_color);
// save image
imagejpeg($output, $destdir, 100);