Go to File > Choose Automate > Crop and Straighten Photos. Photoshop handles this as a batch process. You don't have to select anything manually. It recognizes the scanned image and automatically crops, straightens, and separates each photo into its individual image.
One solution is to use a background image centered within an element sized to the cropped dimensions.
.center-cropped {
width: 100px;
height: 100px;
background-position: center center;
background-repeat: no-repeat;
}
<div class="center-cropped"
style="background-image: url('http://placehold.it/200x200');">
</div>
img
tagThis version retains the img
tag so that we do not lose the ability to drag or right-click to save the image. Credit to Parker Bennett for the opacity trick.
.center-cropped {
width: 100px;
height: 100px;
background-position: center center;
background-repeat: no-repeat;
overflow: hidden;
}
/* Set the image to fill its parent and make transparent */
.center-cropped img {
min-height: 100%;
min-width: 100%;
/* IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
/* IE 5-7 */
filter: alpha(opacity=0);
/* modern browsers */
opacity: 0;
}
<div class="center-cropped"
style="background-image: url('http://placehold.it/200x200');">
<img src="http://placehold.it/200x200" />
</div>
object-fit
/-position
See supported browsers.
The CSS3 Images specification defines the object-fit
and object-position
properties which together allow for greater control over the scale and position of the image content of an img
element. With these, it will be possible to achieve the desired effect:
.center-cropped {
object-fit: none; /* Do not scale the image */
object-position: center; /* Center the image within the element */
height: 100px;
width: 100px;
}
<img class="center-cropped" src="http://placehold.it/200x200" />
I was looking for a pure CSS solution using img
tags (not the background image way).
I found this brilliant way to achieve the goal on crop thumbnails with css:
.thumbnail {
position: relative;
width: 200px;
height: 200px;
overflow: hidden;
}
.thumbnail img {
position: absolute;
left: 50%;
top: 50%;
height: 100%;
width: auto;
-webkit-transform: translate(-50%,-50%);
-ms-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
.thumbnail img.portrait {
width: 100%;
height: auto;
}
It is similar to @Nathan Redblur's answer but it allows for portrait images, too.
Works like a charm for me. The only thing you need to know about the image is whether it is portrait or landscape in order to set the .portrait
class so I had to use a bit of Javascript for this part.
Try this: Set your image crop dimensions and use this line in your CSS:
object-fit: cover;
img
tag but without background-image
This solution retains the img
tag so that we do not lose the ability to drag or right-click to save the image but without background-image
just center and crop with css.
Maintain the aspect ratio fine except in very hight images. (check the link)
(view in action)
Markup
<div class="center-cropped">
<img src="http://placehold.it/200x150" alt="" />
</div>
CSS
div.center-cropped {
width: 100px;
height: 100px;
overflow:hidden;
}
div.center-cropped img {
height: 100%;
min-width: 100%;
left: 50%;
position: relative;
transform: translateX(-50%);
}
I created an angularjs directive using @Russ's and @Alex's answers
Could be interesting in 2014 and beyond :P
html
<div ng-app="croppy">
<cropped-image src="http://placehold.it/200x200" width="100" height="100"></cropped-image>
</div>
js
angular.module('croppy', [])
.directive('croppedImage', function () {
return {
restrict: "E",
replace: true,
template: "<div class='center-cropped'></div>",
link: function(scope, element, attrs) {
var width = attrs.width;
var height = attrs.height;
element.css('width', width + "px");
element.css('height', height + "px");
element.css('backgroundPosition', 'center center');
element.css('backgroundRepeat', 'no-repeat');
element.css('backgroundImage', "url('" + attrs.src + "')");
}
}
});
fiddle link
Try this:
#yourElementId
{
background: url(yourImageLocation.jpg) no-repeat center center;
width: 100px;
height: 100px;
}
Keep in mind that width
and height
will only work if your DOM element has layout (a block displayed element, like a div
or an img
). If it is not (a span, for example), add display: block;
to the CSS rules. If you do not have access to the CSS files, drop the styles inline in the element.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With