Je veux montrer une image à partir d'une URL avec une certaine largeur et hauteur même si elle a un rapport de taille différent. Je veux donc redimensionner (en maintenant le rapport), puis couper l'image à la taille que je veux.
Je peux redimensionner avec la img
propriété html et je peux couper avec background-image
.
Comment puis-je faire les deux?
Exemple:
Cette image:
A la taille des 800x600
pixels et je veux montrer comme une image de 200x100
pixels
Avec img
je peux redimensionner l'image 200x150px
:
<img
style="width: 200px; height: 150px;"
src="http://i.stack.imgur.com/wPh0S.jpg">
Cela me donne ceci:
<img style="width: 200px; height: 150px;" src="https://i.stack.imgur.com/wPh0S.jpg">
Et avec background-image
je peux couper les 200x100
pixels de l'image .
<div
style="background-image:
url('https://i.stack.imgur.com/wPh0S.jpg');
width:200px;
height:100px;
background-position:center;"> </div>
Donne moi:
<div style="background-image:url('https://i.stack.imgur.com/wPh0S.jpg'); width:200px; height:100px; background-position:center;"> </div>
Comment puis-je faire les deux?
Redimensionner l'image puis la couper à la taille souhaitée?
la source
Avec CSS3, il est possible de modifier la taille d'un
background-image
avecbackground-size
, en remplissant les deux objectifs à la fois.Il y a un tas d'exemples sur css3.info .
Implémenté sur la base de votre exemple , à l'aide de donald_duck_4.jpg . Dans ce cas,
background-size: cover;
c'est exactement ce que vous voulez - il s'adapte àbackground-image
pour couvrir toute la zone du contenant<div>
et coupe l'excédent (en fonction du rapport).css3 image de fond taille d'arrière-plan
la source
<img />
balises, consultezobject-fit: cover
les valeurs associées de la spécification CSS Image Values and Replaced Content Module Level 3 .Avez-vous essayé de l'utiliser?
J'avais besoin de redimensionner l'image, de la centrer (verticalement et horizontalement) et de la recadrer.
J'étais heureux de constater que cela pouvait être fait en une seule ligne CSS. Vérifiez l'exemple ici: http://codepen.io/chrisnager/pen/azWWgr/?editors=110
Voici le code
CSS
etHTML
de cet exemple:la source
Le div contenant recadre essentiellement l'image en masquant le débordement.
la source
la source
Merci sanchothefat.
J'ai une amélioration à votre réponse. Comme le recadrage est très adapté à chaque image, ces définitions doivent être au format HTML au lieu de CSS.
la source
la source
Le code ci-dessous recadrera votre image pour vous. Vous pouvez jouer avec l' ajustement d' objet
la source
Exemple en direct: https://jsfiddle.net/de4Lt57z/
HTML:
CSS:
Explication: Ici, l'image est redimensionnée en fonction de la valeur de largeur et de hauteur de l'image. Et le recadrage se fait par la propriété clip.
Pour plus de détails sur la propriété du clip, suivez: http://tympanus.net/codrops/2013/01/16/understanding-the-css-clip-property/
la source
Dans la classe de recadrage, placez la taille d'image que vous souhaitez voir apparaître:
Le html ressemblera à:
la source
la source
Vous pouvez mettre la balise img dans une balise div et faire les deux, mais je vous déconseille de redimensionner les images dans le navigateur. Il fait un travail moche la plupart du temps parce que les navigateurs ont des algorithmes de mise à l'échelle très simplistes. Mieux vaut faire votre mise à l'échelle dans Photoshop ou ImageMagick d'abord, puis servez-le au client gentil et joli.
la source
Ce que j'ai fait, c'est de créer un script côté serveur qui redimensionnera et recadrera une image du côté serveur afin qu'il envoie moins de données à travers l'interweb.
C'est assez banal, mais si quelqu'un est intéressé, je peux rechercher et poster le code (asp.net)
la source
Il existe des services comme Filestack qui le feront pour vous.
Ils prennent l'URL de votre image et vous permettent de la redimensionner à l'aide des paramètres d'URL. C'est assez simple.
Votre image ressemblerait à ceci après avoir été redimensionnée à 200x100 mais en gardant le rapport hauteur / largeur
L'URL entière ressemble à ceci
mais la partie importante est juste
la source
Essayez d'utiliser la
clip-path
propriété:Plus d'exemples ici .
la source
la source
Si vous utilisez Bootstrap, essayez d'utiliser
{ background-size: cover; }
pour<div>
peut - être donner à la classe une classe<div class="example" style=url('../your_image.jpeg');>
pour qu'elle deviennediv.example{ background-size: cover}
la source
Je devais le faire récemment. Je voulais créer un lien miniature vers un graphique NOAA. Comme leur graphique pouvait changer à tout moment, je voulais que ma miniature change avec. Mais il y a un problème avec leur graphique: il a une énorme bordure blanche en haut, donc si vous le mettez à l'échelle pour créer la vignette, vous vous retrouvez avec des espaces étrangers dans le document.
Voici comment je l'ai résolu:
http://sealevel.info/example_css_scale_and_crop.html
J'ai d'abord dû faire un peu d'arithmétique. L'image originale de la NOAA est de 960 × 720 pixels, mais les soixante-dix premiers pixels sont une zone de bordure blanche superflue. J'avais besoin d'une vignette 348 × 172, sans la zone de bordure supplémentaire en haut. Cela signifie que la partie souhaitée de l'image d'origine est de 720 - 70 = 650 pixels de haut. J'avais besoin de réduire cela à 172 pixels, soit 172/650 = 26,5%. Cela signifiait que 26,5% de 70 = 19 lignes de pixels devaient être supprimées du haut de l'image mise à l'échelle.
Alors…
Réglez la hauteur = 172 + 19 = 191 pixels:
hauteur = 191
Réglez la marge inférieure à -19 pixels (raccourcissant l'image à 172 pixels de haut):
marge en bas: -19 px
Réglez la position du haut sur -19 pixels (en déplaçant l'image vers le haut, de sorte que les 19 premières lignes de pixels débordent et soient masquées au lieu de celles du bas):
haut: -19px
Le code HTML résultant ressemble à ceci:
Comme vous pouvez le voir, j'ai choisi de styliser la balise <a> contenante, mais vous pouvez plutôt styliser une <div>.
Un artefact de cette approche est que si vous affichez les bordures, la bordure supérieure sera manquante. Comme j'utilise border = 0 de toute façon, ce n'était pas un problème pour moi.
la source
Vous pouvez utiliser le service de redimensionnement d'image de Kodem . Vous pouvez redimensionner n'importe quelle image avec un simple appel http. Peut être utilisé avec désinvolture dans le navigateur ou utilisé dans votre application de production.
la source