Я хочу показать изображение из URL с определенной шириной и высотой, даже если оно имеет другое соотношение размеров. Поэтому я хочу изменить размер (сохранить соотношение), а затем обрезать изображение до нужного размера.
Я могу изменить размер с помощью img
свойства HTML, и я могу сократить с background-image
.
Как я могу сделать оба?
Пример:
Это изображение:
Имеет размер в 800x600
пикселях, и я хочу показать как изображение 200x100
пикселей
С помощью img
я могу изменить размер изображения 200x150px
:
<img
style="width: 200px; height: 150px;"
src="http://i.stack.imgur.com/wPh0S.jpg">
Это дает мне это:
<img style="width: 200px; height: 150px;" src="https://i.stack.imgur.com/wPh0S.jpg">
И с помощью background-image
я могу вырезать изображения 200x100
пикселей.
<div
style="background-image:
url('https://i.stack.imgur.com/wPh0S.jpg');
width:200px;
height:100px;
background-position:center;"> </div>
Дает мне:
<div style="background-image:url('https://i.stack.imgur.com/wPh0S.jpg'); width:200px; height:100px; background-position:center;"> </div>
Как я могу сделать оба?
Изменить размер изображения, а затем сократить его размер, который я хочу?
источник
С CSS3 можно изменить размер
background-image
сbackground-size
, выполняя обе цели одновременно.Есть несколько примеров на css3.info .
Реализовано на основе вашего примера с использованием donald_duck_4.jpg . В этом случае
background-size: cover;
как раз то, что вам нужно - оно подходит для того,background-image
чтобы покрыть всю область содержимого<div>
и обрезает лишнее (в зависимости от соотношения).CSS3 изображение на заднем плане фон-размер
источник
<img />
тегов посмотритеobject-fit: cover
и связанные значения из спецификации CSS Image Values и Replaced Content Module Level 3 .Вы пытались использовать это?
Мне нужно было изменить размер изображения по центру (как по вертикали, так и по горизонтали), а затем обрезать его.
Я был счастлив обнаружить, что это можно сделать за одну линию CSS. Проверьте пример здесь: http://codepen.io/chrisnager/pen/azWWgr/?editors=110
Вот
CSS
иHTML
код из этого примера:источник
Содержащий div по существу обрезает изображение, скрывая переполнение.
источник
источник
Спасибо sanchothefat.
У меня есть улучшение вашего ответа. Поскольку кадрирование очень адаптировано для каждого изображения, эти определения должны быть в HTML, а не в CSS.
источник
источник
Приведенный ниже код обрезает ваше изображение для вас. Вы можете поиграть с подгонкой объекта
источник
Пример из жизни: https://jsfiddle.net/de4Lt57z/
HTML:
CSS:
Объяснение: Здесь размер изображения изменяется по ширине и высоте изображения. И обрезка осуществляется с помощью свойства клипа.
Для получения подробной информации о свойствах клипа следуйте: http://tympanus.net/codrops/2013/01/16/understanding-the-css-clip-property/
источник
В классе обрезки поместите размер изображения, которое вы хотите отобразить:
HTML будет выглядеть так:
источник
источник
Вы можете поместить тег img в тег div и сделать оба, но я бы рекомендовал не масштабировать изображения в браузере. Это делает паршивую работу большую часть времени, потому что браузеры имеют очень упрощенные алгоритмы масштабирования. Лучше сначала выполнить масштабирование в Photoshop или ImageMagick, а затем довести его до клиента красиво и красиво.
источник
Я создал сценарий на стороне сервера, который будет изменять размер и обрезать картинку на стороне сервера, чтобы он передавал меньше данных через Интернет.
Это довольно тривиально, но если кому-то интересно, я могу выкопать и выложить код (asp.net)
источник
Есть такие сервисы, как Filestack, которые сделают это за вас.
Они принимают URL-адрес вашего изображения и позволяют изменить его размер с помощью параметров URL-адреса. Это довольно легко.
Ваше изображение будет выглядеть так после изменения размера до 200x100, но с сохранением соотношения сторон
Весь URL выглядит так
но важная часть просто
источник
Попробуйте использовать
clip-path
свойство:Больше примеров здесь .
источник
источник
Если вы используете Bootstrap, попробуйте использовать
{ background-size: cover; }
для<div>
дать классу слово скажем,<div class="example" style=url('../your_image.jpeg');>
чтобы он сталdiv.example{ background-size: cover}
источник
Мне нужно было сделать это недавно. Я хотел сделать пиктограмму-ссылку на график NOAA. Поскольку их график может измениться в любое время, я хотел, чтобы мой эскиз менялся вместе с ним. Но есть проблема с их графиком: он имеет огромную белую рамку сверху, поэтому, если вы просто масштабируете его, чтобы сделать миниатюру, вы получите лишние пробелы в документе.
Вот как я это решил:
http://sealevel.info/example_css_scale_and_crop.html
Сначала мне нужно было сделать немного арифметики. Исходное изображение от NOAA составляет 960 × 720 пикселей, но верхние семьдесят пикселей - это лишняя белая граница. Мне нужно было миниатюру 348 × 172, без дополнительной границы в верхней части. Это означает, что желаемая часть исходного изображения имеет высоту 720 - 70 = 650 пикселей. Мне нужно было уменьшить его до 172 пикселей, то есть 172/650 = 26,5%. Это означало, что 26,5% из 70 = 19 строк пикселей необходимо удалить из верхней части масштабированного изображения.
Так…
Установите высоту = 172 + 19 = 191 пикселей:
высота = 191
Установите нижнее поле до -19 пикселей (укорочение изображения до 172 пикселей в высоту):
край дно: -19px
Установите верхнюю позицию на -19 пикселей (смещая изображение вверх, чтобы верхние строки в 19 пикселей переполнялись и скрывались вместо нижних):
верх: -19px
Результирующий HTML выглядит так:
Как видите, я выбрал стилизацию содержащего тега <a>, но вместо этого вы можете использовать стиль <div>.
Одним из недостатков этого подхода является то, что если вы покажете границы, верхняя граница будет отсутствовать. Так как я в любом случае использую border = 0, для меня это не было проблемой.
источник
Вы можете воспользоваться сервисом изменения размера изображения Kodem . Вы можете изменить размер любого изображения с помощью http-звонка. Может использоваться случайно в браузере или использоваться в вашем производственном приложении.
источник