измените размер изображения до точного размера, сохраните аспект и заполните любое пространство в php

StackOverflow https://stackoverflow.com/questions/3209206

Вопрос

хай,

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

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

оригинальное фото:

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

Удачи!:)

Другие советы

Создайте 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;
}
.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top