phplibrary/src/Tools/Image.php

54 lines
No EOL
1.5 KiB
PHP

<?php
namespace ctiso\Tools;
use GdImage;
class Image
{
/**
* @param string $uri
* @return GdImage|false
*/
static function load($uri): GdImage|false
{
$e = strtolower(pathinfo($uri, PATHINFO_EXTENSION));
switch ($e) {
case 'png': return imagecreatefrompng($uri);
case 'jpeg': case 'jpg': return imagecreatefromjpeg($uri);
case 'gif': return imagecreatefromgif($uri);
}
return false;
}
static function fit(GdImage $image, int $prewidth, int $preheight, bool $force = true): GdImage|false
{
$width = imagesx($image);
$height = imagesy($image);
$percent = min($prewidth / $width, $preheight / $height);
if ($percent > 1 && !$force) $percent = 1;
$new_width = $width * $percent;
$new_height = $height * $percent;
$image_p = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
return $image_p;
}
/**
* @param GdImage $image
* @param string $uri
* @return bool
*/
static function save($image, $uri): bool
{
$e = strtolower(pathinfo($uri, PATHINFO_EXTENSION));
switch ($e) {
case 'jpg': imagejpeg($image, $uri, 100); break;
case 'png': imagepng($image, $uri); break;
case 'gif': imagegif($image, $uri); break;
}
return false;
}
}