Skip to content
This repository was archived by the owner on Dec 23, 2022. It is now read-only.

runkids/Imagvue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Imagvue

vue2 npm npm bundle size (minified)

  • Imagvue provides basic image processing props(size,blur,contrast,grayscale, etc.).

  • Support image lazy loading.

  • All Attributes can bind with data

Demo

Edit imagvue demo

Installation

Get from npm / yarn:

npm i imagvue
yarn add imagvue

Directly include imagvue.min.js to your view like

<script src='https://cdn.jsdelivr.net/npm/imagvue@0.0.5/dist/imagvue.min.js'></script>

Usage

html:
<imagvue v-model="url" width="400" height="600"></imagvue>
vue file:
import imagvue from 'imagvue'

export default {
  name: 'app',
  components: {
    imagvue,
  },
  data(){
    return {
      url: 'https://source.unsplash.com/random',
      localURL: require('./imagvue.png'),
    }
  }
}

Lazy loading Image

DEMO

how to use ?

Use transition-group and set attribute src with your loading image inner imagvue. Also you can set attributelazy for delay time.

1. src

Type: String
Required: ture

Your loading image.

2. lazy

Type: Number
Default: 0

Show image delay time.

3. rootMargin

Type: String
Default: 0px

Syntax similar to that of CSS Margin

rootMargin

4. threshold

Type: Number
Default: 0

Ratio of element convergence

threshold

  <imagvue
    v-model="url"
    :onerror="()=>url='https://i.stack.imgur.com/cl91I.png'"
    width="400" 
    height="600"
  >
    <transition-group 
      :src="require(loading.gif)" --> your loading image
      :lazy="500" --> lazy time , default is 0 ( ms )
      rootMargin="0px 0px"
      :threshold="0.1"
    >
    </transition-group> 
  </imagvue>

Browser Support

Available in latest browsers. If browser support is not available, use this polyfill.

Props

1. value

Type: String
Required: ture

The image URL. This is mandatory for the <imagvue>

<imagvue v-model="url"></imagvue>
2. width

Type: String , Number
Required: false
Default: auto

The intrinsic width of the image in pixels.

3. height

Type: String , Number
Required: false
Default: auto

The intrinsic height of the image in pixels.

4. onerror

Type: Function
Required: false

If an error occurs while trying to load or render an image , call a function

<imagvue 
  v-model="url"
  :onerror="()=>url='./error.png'"
>
</imagvue>

5. blur

Type: String , Number
Required: false
Default: 0

Applies a Gaussian blur to the input image.
Range: 0 ~ larger value ( px )

<imagvue v-model="url" :blur="50"></imagvue>

6. contrast

Type: String , Number
Required: false
Default: 100

Adjusts the contrast of the input.
Range: 0 ~ over 100 ( % )

<imagvue v-model="url" :contrast="50"></imagvue>

7. brightness

Type: String , Number
Required: false
Default: 100

Applies a linear multiplier to input image
Range: 0 ~ over 100 ( % )

<imagvue v-model="url" :brightness="50"></imagvue>

8. grayscale

Type: String , Number
Required: false
Default: 0

Converts the input image to grayscale.
Range: 0 ~ 100 ( % )

<imagvue v-model="url" :grayscale="50"></imagvue>

9. hueRotate

Type: String , Number
Required: false
Default: 0

Applies a hue rotation on the input image.
Range: 0 ~ 360 ( deg )

<imagvue v-model="url" :hue-rotate="50"></imagvue>

10. invert

Type: String , Number
Required: false
Default: 0

Inverts the samples in the input image.
Range: 0 ~ 100 ( % )

<imagvue v-model="url" :invert="50"></imagvue>

11. opacity

Type: String , Number
Required: false
Default: 0

Applies transparency to the samples in the input image.
Range: 0 ~ 100 ( % )

<imagvue v-model="url" :opacity="50"></imagvue>

12. saturate

Type: String , Number
Required: false
Default: 0

Saturates the input image.
Range: 0 ~ 100 ( % )

<imagvue v-model="url" :saturate="50"></imagvue>

13. sepia

Type: String , Number
Required: false
Default: 0

Converts the input image to sepia.
Range: 0 ~ 100 ( % )

<imagvue v-model="url" :sepia="50"></imagvue>

14. dropShadow

Type: Object
Required: false
Default: null

Applies a drop shadow effect to the input image.

  • offset: This value to set the shadow offset.
  • blurRadius: The larger this value, the bigger the blur, so the shadow becomes bigger and lighter.
  • spreadRadius: Positive values will cause the shadow to expand and grow bigger, and negative values will cause the shadow to shrink.
  • color: The color of the shadow.
export default {
  name: 'app',
  components: {
    imagvue,
  },
  data(){
    return {
      dropShadow:{ 
        offset: 16, --> required
        blurRadius: 0, --> optional default 0 px
        spreadRadius: 0, --> optional default 0 px
        color: 'black' --> optional default black
      }
    }
  }
}
<imagvue v-model="url" :dropShadow="dropShadow"></imagvue>

15. filters

Type: Boolean
Required: false
Default: true

if you won't to use filters ( blur,contrast,grayscale, etc.).
just set props filters to false

<imagvue v-model="url" :filters="false"></imagvue>
16. customData

Type: Object
Required: false
Default: null

This is used to pass additional information to <imagvue>

  • on: events to be subscribe of <imagvue>
  • props: props to be passed to <imagvue>
<imagvue v-model="url" :customData="customData()"></imagvue>
methods:{
    onLoadEvent(){
      //todo
    },
    customData(){
      return {
        on: {
          load: this.onLoadEvent,
        }
      }
    }
}

Code Example

<template>
  <div class="container">
      <imagvue class="lazyimage"
          v-for="d in loadUrls" :key="d.url"
          :onerror="()=>d.url=errorURL"
          :value="d.url"
          width="400" 
          height="267"
          :blur="filters.blur"
          :brightness="filters.brightness"
          :contrast="filters.contrast"
          :grayscale="filters.grayscale"
          :hue-rotate="filters.rotate"
          :opacity="filters.opacity"
          :invert="filters.invert"
          :saturate="filters.saturate"
          :sepia="filters.sepia"
          :dropShadow="dropShadow"
          :customData="customData()"
      >
        <transition-group :src="d.lazy" :lazy="0" rootMargin="0px 0px" :threshold="0.1"></transition-group>
      </imagvue>
  </div>
</template>
<script>
import imagvue from 'imagvue';
export default {
  components:{
    imagvue,
  },
  data(){
    return{
      filters: {
        blur: 0,
        contrast: 100,
        brightness: 100,
        grayscale: 0,
        rotate: 0,
        opacity: 100,
        invert: 0,
        saturate: 100,
        sepia: 0,
        dropShadow:{ 
          offset: 16,
          blurRadius: 10, 
          spreadRadius: 10, 
          color: 'black'
        }
      },
      errorURL:'https://cdn.browshot.com/static/images/not-found.png',
      loadUrls:[
        {url:'https://goo.gl/PxTSno' , lazy:'https://goo.gl/aiwqia'},
        {url:'https://goo.gl/K1kZWk' , lazy:'https://goo.gl/vnHTAh'},
        {url:'https://goo.gl/gTZMkF' , lazy:'https://goo.gl/K1Mheq'},
        {url:'https://goo.gl/PxTSno1' , lazy:'https://goo.gl/aiwqia'},
      ]
    }
  },
  methods:{
    onLoadEvent(){
      console.log("Image on load!");
    },
    customData(){
      return {
        on: {
          load: this.onLoadEvent,
        }
      }
    }
  }
}
</script>
<style>
.container{
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}
.lazyimage{
  max-width: 100%;
  display: block;
  margin: 1024px auto 128px;
  background-repeat: no-repeat;
  background-size: contain;
}
</style>

License

Imagvue is licensed under MIT License.

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy