erricss, на всякий случай кину свой вариант. Смотри, вот сама функция:
Нажми на меня (+/-)
function resize_image($image, $size = 150) {
define('DS', DIRECTORY_SEPARATOR);
// папка для сохранения превьюшек
$dir = 'tmp';
// имя превьюшки
$name = pathinfo($image);
$name = basename($image, '.'.$name['extension']);
if(!is_dir($dir)) {
mkdir($dir, 0777, 1);
}
if ($image) {
$info = @getimagesize($image);
if ($info) {
if ($info[2] > 3) {
echo '<div>Не верный тип файла!</div>';
} else {
switch ($info[2]) {
case 1:
$function = 'imagecreatefromgif';
break;
case 2:
$function = 'imagecreatefromjpeg';
break;
case 3:
$function = 'imagecreatefrompng';
break;
}
$image = $function($image);
}
$x = imagesx($image);
$y = imagesy($image);
} else {
echo '<div>Файл не найден!</div>';
}
$filename = $dir . DS . $name . '.jpg';
// пропорционально уменьшить по ширине до 240
if ($y > $size) {
$newx = $size;
$newy = $y * ($size / $x);
} else {
$newx= $x;
$newy = $y;
}
$newimg = imagecreatetruecolor($newx, $newy);
if ($info[2]==3) {
// прозрачность для png
imagefill($newimg, 0, 0, imagecolorallocate($newimg, 255, 255, 255));
} elseif ($info[2]==1) {
// прозрачность для gif
imagecolortransparent($image, imagecolorallocate($image, 255, 255, 255));
}
imagecopyresampled($newimg, $image, 0, 0, 0, 0, $newx, $newy, $x, $y);
@imagejpeg($newimg, $filename, 100);
} else {
return false;
}
}
А вот так её надо использовать:
if (!file_exists(ROOTPATH . 'tmp/27_2.jpg'))
resize_image(ROOTPATH . 'files/board/27_2.jpg');
echo '<img src="/tmp/27_2.jpg" />';
Вот это:
tmp/27_2.jpg - твоя превьюшка. Мы проверяем её наличие, если её нет то делаем, а затем выводим. Вот это:
files/board/27_2.jpg - оригинальная картинка. Плюс в самой функции вот это:
$dir = 'tmp';
Замени на свою папку с превьюшками.
ValekS, Спасибо. Сейчас потестирую
ValekS, код старый, но рабочий, уже и не помню для чего или кого писал, сейчас вы я по другому сделал, так как нашёл интересные подходы, но давно понял что сама гд кривая до не могу, и много нюансов есть, при том же наложении картинок или прозрачности
ValekS, настроящая прозрачность не так делается.
это у тебя старинный вариант, он косячит с обводкой и полу-прозрачными пикселями
$image= ImageCreateFromPng('image.png');
imageSaveAlpha($image, true);
Koenig, да не, не кривая она, сейчас уже все есть для работы с альфа-каналом
ramzes, у меня целый парк велосипедов по этому поводу, все странности появляются в следствии конвертации типов изображений, для пнг это один способ, для прочих другие
# ramzes (15.07.2016 / 19:51)
ValekS, настроящая прозрачность не так делается.
это у тебя старинный вариант, он косячит с обводкой и полу-прозрачными пикселями
$image= ImageCreateFromPng('image.png');
imageSaveAlpha($image
Это не у меня, а у Димона.
ImageMagick лучше ГД?
ValekS, конечно лучше, даже гифки не портит
ImageMagick
вот чего не знаю, того не знаю. гифки он делает а ГД ннет. это все мои познания о нем)
if($imgsize['mime']=='image/png'){
$src = ImageCreateFromPng($image);
$dst=ImageCreateTrueColor($tn_width, $tn_height);
$black = imagecolorallocate($dst, 0, 0, 0);
imagecolortransparent($dst, $black);
imagealphablending($dst, false);
imageSaveAlpha($dst, true);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
if(isset($this->query[1]) AND $this->query[1]='preview') {
$copy = ImageCreateFromPng('image/copy.png');
imagealphablending($dst, true);
imagecopyresampled($dst, $copy, $tn_width - 125, $tn_height - 35, 0, 0, 125, 35, 125, 35);
ImageDestroy($copy);
}
header("Content-type: image/png");
ImagePng($dst, null);
ImageDestroy($src);
ImageDestroy($dst);
}
результат:
http://smartoff.net/forum/imag ... view/
ramzes, то есть у тебя изначально извесно что приходит пнг, у меня по другому
http://johncms.com/forum/index ... 42230 имага из строки
# Koenig (16.07.2016 / 00:16)
ramzes, то есть у тебя изначально извесно что приходит пнг, у меня по другому
http://johncms.com/forum/index ... 98994 имага из строки
нет. это просто кусок для пнг. ты же не будешь сохранять несуществующую прозрачность жипега?