core/api/php/img2.php

81 lines
3.0 KiB
PHP
Executable File

<?php
/*
путь к файлу
ширина
высота
путь к новому файлу
степерь сжатия 1-100
*/
function rimg ( $file, $w, $h, $newfile, $zip=100, $c=0 ) {
if (!$file) die('не указан файл');
if (!$h)$h=$w;//если не задана высота, делаем квадрат
if (!$newfile)$newfile=$file;//если не создаем новый, то переписываем текущий
/* узнаем высоту и ширину */
$size = getimagesize ( $file );
$wr=$size[0];
$hr=$size[1];
exec('convert ' . $file . ' -resize ' . $w . ' -strip -quality ' . $zip . ' ' . $newfile);
//обрезаем высоту до нужного размера
if ($c==1)
exec('convert ' . $newfile . ' -gravity Center -crop ' . $w . 'x' . $h . '+0 -colorspace Gray ' . $newfile);
else
exec('convert ' . $newfile . ' -gravity Center -crop ' . $w . 'x' . $h . '+0 ' . $newfile);
}
function rimg_prop ( $file, $w, $newfile, $zip=100 ) {
if (!$file) die('не указан файл');
if (!$newfile)$newfile=$file;//если не создаем новый, то переписываем текущий
/* узнаем высоту и ширину */
exec('convert ' . $file . ' -resize ' . $w . ' -quality ' . $zip . ' ' . $newfile);
return 'convert ' . $file . ' -resize ' . $w . ' -quality ' . $zip . ' ' . $newfile;
}
/**
* void square_preview - создание квадратных превью из JPEG-файлов
*
* string $file - имя файла оригинального изображения
* int $size - размер стороны квадрата превью
*
*/
function square_preview($file, $size, $target)
{
// Выставляем заголовок
// header("Content-Type: image/jpg");
// Открываем оригинальное изображение
$source = imagecreatefromjpeg($file);
// Получаем размеры оригинального изображения
list($width, $height) = getimagesize($file);
// Превью
$thumbs = imagecreatetruecolor($size, $size);
// Горизонтальное изображение
if ($width > $height && $width > $size)
{
imagecopyresampled($thumbs, $source, 0, 0, (($width-$height)/2), 0, $size, $size, $height, $height);
}
// Вертикальное изображение
elseif ($height > $width && $height > $size)
{
imagecopyresampled($thumbs, $source, 0, 0, 0, (($height-$width)/2), $size, $size, $width, $width);
}
// Если квадрат
elseif ($height == $width && $height > $size)
{
imagecopyresampled($thumbs, $source, 0, 0, 0, 0, $size, $size, $width, $width);
}
// Изображение меньше размеров стороны
else
{
$thumbs = $source;
}
// Выводим изображение
imagejpeg($thumbs, $target);
}
?>