2013-07-18 2 views
0

Есть ли способ изменить размер изображения, не искажая его?Как преобразовать уменьшенное изображение на большее изображение css

У меня есть миниатюрный снимок размером 70 пикселей, и мне нужно изменить его размер до 200px X 165px, сохраняя соотношение сторон. В данный момент он растягивает его, когда я устанавливаю ширину: 200 пикселей и высоту: 165 пикселей.

Вот код:

CSS

.listing-img-div { 
    width: 200px; 
    height: 165px; 
} 

.listing-img { 
    border: 1px solid black; 
    margin-top: 5px; 
    border: 1px solid #ddd; 
    width: 100%; 
    height: 100%; 
} 

HTML/PHP 

echo '<div class="listing-img-div">'; 
    echo '<img class="listing-img" src="'.$img.'" alt="'.$title.'">';              echo '</div>'; 
+0

Если ваш контейнер '200px wide', вы можете использовать' img {max-width: 100%; высота: авто; } 'Это будет растягивать изображение до ширины содержащего div при сохранении пропорции - если вы увеличиваете размер, вы, очевидно, заметите некоторую размытость. Это помогло бы, если бы вы могли разместить свой HTML и CSS. –

ответ

6

Если это не SVG или любой тип векторного типа изображения, растягивая это приведет к потере качества, потому что такие типы, как JPG, BMP, PNG имеют тип с потерями.

Простое изменение размер, однако, может быть достигнут следующим образом путем поддержания соотношения сторон:

img { 
    height: 165px; 
    width: auto; 
    max-width: 200px; 
    max-height: 165px; 
} 

или

img { 
    height: auto; 
    width: 200px; 
    max-width: 200px; 
    max-height: 165px; 
} 

Пояснение:

Вы даете либо фиксированную ширину или фиксированную высота по умолчанию. Что для вас важнее. Сила остального параметра автоматически масштабируется, следовательно, автоматически. После этого вы переопределяете дополнительные атрибуты для масштабирования изображений, чтобы в случае их изменения размер получался меньше + max-width/max-height не поддерживается в IE6 или ниже, поэтому вы все равно можете захотеть возврат к фиксированному размеру.

+0

, пожалуйста, объясните ему, что там происходит! :) Затем == +1 :) –

+0

вы задаете фиксированную ширину или фиксированную высоту по умолчанию. Что для вас важнее. Затем принудительно масштабируйте оставшийся параметр автоматически, следовательно, автоматически. После этого вы переопределяете дополнительные атрибуты для масштабирования изображений, чтобы в случае их изменения размер получался меньше + max-width/max-height не поддерживается в IE6 или ниже, поэтому вы все равно можете захотеть возврат к фиксированному размеру. – acudars

+0

вам пришлось отдать его ему, а не мне! Под редакцией! :) –

1

Вы также можете установить ширину только на auto и высотой до 100%.

img { 
    width: auto; 
    max-height: 100%; 
} 

И, как сказано другими, пока изображение не будет не vector или не SVG это всегда приводит к потере качества.

+0

Есть ли все-таки сделать изображение вектором или SVG с css, JavaScript? Я рисую образ через API, и он возвращает только 70-значный эскиз. – dgolman

+0

@dgolman Я боюсь, вы не можете сделать векторное изображение, но вы можете сделать SVG. –

+0

@dgolman посмотреть эту ссылку: http://stackoverflow.com/questions/12991351/css-force-image-resize-and-keep-aspect-ratio надеюсь, что это поможет :) –

Смежные вопросы