изменить размер изображения до точного размера, сохранить аспект и заполнить любое пространство в php - PullRequest
2 голосов
/ 09 июля 2010

hy,

Допустим, я хочу преобразовать изображение в точный размер, например: 400x300.Хитрость в том, что если изображение из-за его соотношения сторон не помещается в формате 400x300, то поместите его туда с черными полями.

Изображение 900x1200 будет преобразовано в 225x300 для сохранения его соотношения сторон,а затем с учетом черных границ влево и вправо, чтобы сделать его 400x300.

исходное фото:

|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  

после изменения размера я хочу выглядеть примерно так:

_______________________
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++||||||||++++++|
|+++++++||||||||++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|_____________________|

the: "+++++++" я хочу быть какого-то цвета, а "|||||||"это изображение посередине!

к сожалению, у меня еще нет кода!

я хочу что-то вроде этого: http://phpthumb.sourceforge.net/demo/demo/phpThumb.demo.demo.php#x22 спасибо

Ответы [ 3 ]

3 голосов
/ 09 июля 2010

Познакомьтесь с gd функциями , которые позволяют вам манипулировать изображениями.

Вам необходимо прочитать изображение, используя одну из функций imagecreatefrom....Затем вам нужно будет создать второе изображение, используя, например, imagecreatetruecolor, которое вы заполняете выбранным вами цветом.Затем вы копируете исходное изображение в новое изображение, используя imagecopyresampled, что позволяет изменить его размер в процессе.Вам нужно будет заранее рассчитать новый размер с помощью простой математики, с которой вам могут помочь такие функции, как getimagesize.

Либо поиграйте с ImageMagick класс, который является альтернативой gd, с которым вам может или не может быть легче работать.

Желаем удачи!:)

0 голосов
/ 09 июля 2010

Создайте div, стилизованный под черный фон размером 400x300. Затем покажите свое измененное изображение внутри этого div. Вы даже можете включить проверку, чтобы убедиться, что изображение не является нужным аспектом перед отображением div.

Примерно так:

<? 
$height-ratio = $height / 300;
$width-ratio = $width / 400;

if ($height-ratio == $width-ratio) {
 $ratio = $height-ratio;
} elseif ($height-ratio > $width-ratio) {
 $ratio = $height-ratio;
 echo "<div class='blackbox'>";
} else {
 $ratio = $width-ratio;
 echo "<div class='blackbox'>";
}

$newHeight = $height / $ratio;
$newWidth = $width / $ratio;
echo "<img src='".$imgSrc."' height='".$newHeight."' width='".$newWidth."' />";

if ($height-ratio != $width-ratio)
 echo "</div>";
?>

С поддержкой CSS:

.blackbox { 
 text-align: center;
 background-color: black;
 height: 300px;
 width: 400px;
}
0 голосов
/ 09 июля 2010

Я большой поклонник редактирования и изменения размера картинок заранее, чтобы они соответствовали нужному мне размеру, а не настраивал ширину и высоту при рендеринге.Производительность выше, и вам не нужно беспокоиться о том, как разные браузеры могут обрабатывать ее по-разному.

Так что, если у вас нет программы для редактирования изображений, получите Paint.net.Бесплатно и хорошо работает.

...