|
|
|
|
|
для: JIEXA
(23.02.2006 в 22:22)
| | Я тут сегодня у себя на сайте захотел галерею повесить и как любой уважающий себя программист начал писать её сам... :) Короче столкнулся с той же проблемой что и Вы. Вот собссно что у меня получилось. Код конечно не идеален, но он выполняет свою функцию. Картинка "вырезается" из середины исходной и в итоге краев нету:
<?
Resize("original.jpg","copy.jpg",100,100);
function Resize($sfilename,$dfilename,$w,$h)
{
$type = getimagesize($sfilename);
$type = $type['mime'];
$dst_image = imagecreatetruecolor($w,$h);
imagefill($dst_image,0,0,0xFFFFFF);
switch($type)
{
case "image/jpeg": $src_image = imagecreatefromjpeg($sfilename); break;
case "image/png": $src_image = imagecreatefrompng($sfilename); break;
case "image/gif": $src_image = imagecreatefromgif($sfilename); break;
default: return false;
}
$dst_w = $w;
$dst_h = $h;
$src_w = imageSX($src_image);
$src_h = imageSY($src_image);
$src_ratio = $src_w / $src_h;
$dst_ratio = $dst_w / $dst_h;
$dst_x = 0;
$dst_y = 0;
if($src_ratio < $dst_ratio)
{
$src_x = 0;
$src_new_h = $src_w * $dst_h / $dst_w;
$src_y = ceil(($src_h - $src_new_h) / 2);
$src_h = $src_new_h;
}
else
{
$src_y = 0;
$src_new_w = $src_h * $dst_w / $dst_h;
$src_x = ceil(($src_w - $src_new_w) / 2);
$src_w = $src_new_w;
}
imagecopyresized($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h);
switch($type)
{
case "image/jpeg": imageJpeg($dst_image,$dfilename); break;
case "image/png": imagePng($dst_image,$dfilename); break;
case "image/gif": imageGif($dst_image,$dfilename); break;
}
}
?>
|
| |
|
|
|
|
|
|
|
для: JIEXA
(23.02.2006 в 14:37)
| | - | |
|
|
|
|
|
|
|
для: cheops
(23.02.2006 в 14:28)
| | нет. дело в том что там скрипт создает не фексированные уменьшенные копии. тоесть там получаются картинки 100х93, 100х89, 100х50. А нам нужно именно к примеру 100х70 и чтобы всегда создавались 100х70. И чтобы на них небыло пустых мест. | |
|
|
|
|
|
 2.7 Кб |
|
|
для: cernos
(23.02.2006 в 10:03)
| | теперь то что должно получится после обработки скриптом. | |
|
|
|
|
|
|
|
для: cernos
(23.02.2006 в 10:03)
| | Да! Только не только обрезалось ну и уменьшалось. Исходная картинка в атаче. | |
|
|
|
|
|
|
|
для: JIEXA
(23.02.2006 в 10:01)
| | Я понял, необходимо чтобы изображение не растягивалось, а обрезалось! Я тоже это хочу узнать как! | |
|
|
|
|
|
|
|
для: 1999
(23.02.2006 в 01:19)
| | эммм. получается плохо - картинки растягиваются и выглядит это не очень... | |
|
|
|
|
|
|
|
для: JIEXA
(23.02.2006 в 01:15)
| |
<?php
$img = $_GET['img']; // тут например передаете url картинки
$size = GetImageSize($img);
$width = $size[0];
$height = $size[1];
$needed_h = 60; // необх. ширина
$needed_w = 100; // необх. высота
$src = ImageCreateFromJpeg($img);
$dst = ImageCreateTrueColor($needed_w,$needed_h);
ImageCopyResized($dst,$src,0,0,0,0,$needed_w,$needed_h,$width,$height);
header('Content-type: image/jpeg');
ImageJpeg($dst,null,-1);
ImageDestroy($src);
ImageDestroy($dst);
?>
|
| |
|
|
|
|
|
|
| Подскажите пожалуйста, как сделать, чтобы картинка уменьшалась до задонного размера. Именно до задонного. К примеру есть картинка 600х400 мне надо из неё сделать 60х100 и чтобы не было пустых месте на уменьшенной картинке. Я надеюсь понятно изложил :))) | |
|
|
|
|