1.0.2 • Published 5 years ago

react-smartpicture v1.0.2

Weekly downloads
2
License
ISC
Repository
github
Last release
5 years ago

react-smartpicture

Crop images with a focuspoint for reactJs.

Features

  • Automatically resizes and centers an images to fit in a container
  • Uses coordinates to ensure a part of an image is always shown (like a face)
  • Reacts on src changes and changes in size of the container (not screen resizes)
  • Offers callback when images is loaded and resized
  • Works with picture element for media optimized sources
  • No jQuery required

How it works

SmartPicture creates a container div and puts an image or picture (depending on sources are used) inside it.

The prop "containerClassName" specifies the className of the container div where the dimensions should be written.

Examples

The examples use an image-container css class which might look like:

.image-container {
    width: 300px;
    height: 100px; 
}

Basic Example

import SmartPicture from 'react-smartpicture';

...

<SmartPicture
    src="/path/to/my/image.jpg"
    containerClassName="image-container"
    alt="my image"
    focus={{x: 0.8, y: 0.3}} />
        

Full example with callback

import SmartPicture from 'react-smartpicture';

constructor(props) {
    super(props);
    
    ...
    
    this.sources = [
        {   
            media: "min-width: 640px",
            srcSet: "/myimage-large.jpg 1x, /myimage-large@2x.jpg 2x"
        },
        {   
            media: "min-width: 320px",
            srcSet: "/myimage-small.jpg 1x, /myimage-small@2x.jpg 2x"
        }
    ];
}
 
 ...
 
 function onResize(el) {
    console.log("image is ready", el);
 }
 
 ...
 
 <SmartPicture
         src="/path/to/my/image.jpg"
         sources={this.sources}
         containerClassName="image-container"
         alt="my image"
         id="myImageContainer"
         pivotToCenter={true}
         position="absolute"
         onResize={this.onResize.bind(this)}
         focus={{x: 0.5, y: -0.5}} />
         
         

Properties

PropertyTypeDescription
srcstring, requiredsource of the image, used as \, for picture elements this is the default fallback src
altstring, recommendedalt text of the image
idstringadds the attribute id to the container div
focusObject with x and yBy default, x=0 is on the left border of the image, 1 on the right and 0.5 in the center - y=0 is on the top and 1 is on the bottom. If focus is not set it defaults to the center of the image
pivotToCenterboolean, default: falseconverts the coordinates, that x:0, y:0 is in the center of the image, x:-1, y:1 is on left-top and x:1, y:-1 right-bottom
sourcesarraysets the sources used for optimized media handling, see this.sources in full example
positionstringBy default, the container div is set to "position: relative" by inline css. In some cases it may be useful to set it f.e. to "absolute". Also "relative" seems to have an issue with full-screen images (height: 100vh) as it renders the image 1px too short in height. Setting position to "absolute" fixes this.
onResizefunctionused as callback when image is ready (loaded and resized). As the image "jumps" after loading to get resized and centered, this is useful for overlays / hiding the image until it's ready
1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago