54 lines
No EOL
1.5 KiB
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;
|
|
}
|
|
} |