0.6.0 • Published 25 days ago

@ernesto_tech/expo-gl-image-filters v0.6.0

Weekly downloads
-
License
MIT
Repository
github
Last release
25 days ago

Stand With Ukraine

OpenGL bindings for React Native to implement complex effects over images and components, in the descriptive VDOM paradigm. You can use predefined filters:

  • blur
  • contrast
  • saturation
  • brightness
  • hue
  • negative
  • sepia
  • sharpen
  • temperature
  • exposure.

npm.io

gl-react-native is an implementation of gl-react for react-native. Please read the main gl-react README and gl-react-native README for more information.

Table of Contents

API

Props

Props for ImageFilters Component

NameDescriptionTypeRequiredDefault Value
childrenInner component or url for imageAny+
widthWidth of componentNumber+
heightHeight of componentNumber+
hueHue filterNumber0
blurBlur filterNumber0
sepiaSepia filterNumber0
sharpenSharpen filterNumber0
negativeNegative filterNumber0
contrastContrast filterNumber1
saturationSaturation filterNumber1
brightnessBrightness filterNumber1
temperatureTemperature filterNumber6500
exposureExposure filterNumber0
🆕 colorOverlayColor Overlay with the length of 4 (RGBA format). Values must be a real value between 0 and 255.Array0.0, 0.0, 0.0, 0.0

Constants

DefaultValues

Can be used to set filter to default one manually.

interface DefaultValues {
  sepia: number;
  hue: number;
  blur: number;
  sharpen: number;
  negative: number;
  temperature: number;
  brightness: number;
  contrast: number;
  saturation: number;
  exposure: number;
  colorOverlay: Array<number>;
}
Usage example
import ImageFilters, { Constants } from 'react-native-gl-image-filters';

...

state = {
  blur: 4,
};

...

resetFilter = () => {
  this.setState({
    blur: Constants.DefaultValues.blur,
  });
}

DefaultPresets

Can be used to list available presets.

interface DefaultPresets extends Array<DefaultPreset> {}
interface DefaultPreset {
  name: string,
  description: string,
  preset: Preset,
}
interface Preset {
  sepia?: number;
  hue?: number;
  blur?: number;
  sharpen?: number;
  negative?: number;
  temperature?: number;
  brightness?: number;
  contrast?: number;
  saturation?: number;
  exposure?: number;
}
Usage example
import ImageFilters, { Constants } from 'react-native-gl-image-filters';

...

<>
  {Constants.DefaultPresets.map(item =>
    <View>
      <Text>{item.name}</Text>
      <Text>{item.description}</Text>
      <Surface>
        <ImageFilters {...item.preset}>
          {{ uri: 'https://i.imgur.com/5EOyTDQ.jpg' }}
        </ImageFilters>
       </Surface>
    </View>
  )}
</>

Presets

Use predefined presets.

import { Presets } from 'react-native-gl-image-filters';

Presets.NoPreset;
Presets.AmaroPreset;
Presets.ClarendonPreset;
Presets.DogpatchPreset;
Presets.GinghamPreset;
Presets.GinzaPreset;
Presets.HefePreset;
Presets.LudwigPreset;
Presets.SkylinePreset;
Presets.SlumberPreset;
Presets.SierraPreset;
Presets.StinsonPreset;

...

<ImageFilters {...Presets.StinsonPreset}>
  {{ uri: 'https://i.imgur.com/5EOyTDQ.jpg' }}
</ImageFilters>

Utils

createPreset

Available for creating own presets.

import ImageFilters, { Utils } from 'react-native-gl-image-filters';

const MyOwnPreset = Utils.createPreset({
  brightness: .1,
  saturation: -.5,
  sepia: .15,
});

...

<ImageFilters {...MyOwnPreset}>
  {{ uri: 'https://i.imgur.com/5EOyTDQ.jpg' }}
</ImageFilters>

Recommended Min and Max range for each filter

NameMin. ValueMax. Value
hue06.3
blur030
sepia-55
sharpen015
negative-22
contrast-1010
saturation02
brightness05
temperature040000
exposure-11

Installation

Installation for React Native

npm i --save react-native-gl-image-filters
npm i --save gl-react@^4.0.1
npm i --save gl-react-native@^4.0.1
npm i --save buffer@^5.4.3
npm i --save react-native-unimodules@^0.7.0

or

yarn add react-native-gl-image-filters
yarn add gl-react@^4.0.1
yarn add gl-react-native@^4.0.1
yarn add buffer@^5.4.3
yarn add react-native-unimodules@^0.7.0

Configure your React Native Application

on iOS:

https://github.com/unimodules/react-native-unimodules#-configure-ios

on Android:

https://github.com/unimodules/react-native-unimodules#-configure-android

Installation on Expo

npm i --save react-native-gl-image-filters
npm i --save expo-gl
npm i --save gl-react@^4.0.1
npm i --save gl-react-expo@^4.0.1
npm i --save buffer@^5.4.3

or

yarn add react-native-gl-image-filters
yarn add expo-gl
yarn add gl-react@^4.0.1
yarn add gl-react-expo@^4.0.1
yarn add buffer@^5.4.3

Installation on React Web

npm i --save react-native-gl-image-filters
npm i --save gl-react@^4.0.1
npm i --save gl-react-dom@^4.0.1

or

yarn add react-native-gl-image-filters
yarn add gl-react@^4.0.1
yarn add gl-react-dom@^4.0.1

Usage

Usage with React Native

Example here: examples/react-native

Usage with Expo

Snack: https://snack.expo.io/@gregoryrn/expo-gregorynative-react-native-gl-image-filters Example here: examples/expo

Usage with React web

Blitz: https://stackblitz.com/edit/react-native-gl-image-filters-web-example Example here: examples/web

acornacorn-jsxadd-line-numbersajvansi-colorsansi-regexansi-stylesanymatchargparsearr-diffarr-flattenarr-unionarray-find-indexarray-includesarray-uniqarray-uniquearray.prototype.flatarray.prototype.flatmapasn1assert-plusassign-symbolsasync-eachasynckitatobatob-liteaws-sign2aws4babel-code-framebabel-corebabel-generatorbabel-helper-bindify-decoratorsbabel-helper-builder-binary-assignment-operator-visitorbabel-helper-builder-react-jsxbabel-helper-call-delegatebabel-helper-define-mapbabel-helper-evaluate-pathbabel-helper-explode-assignable-expressionbabel-helper-explode-classbabel-helper-flip-expressionsbabel-helper-function-namebabel-helper-get-function-aritybabel-helper-hoist-variablesbabel-helper-is-nodes-equivbabel-helper-is-void-0babel-helper-mark-eval-scopesbabel-helper-optimise-call-expressionbabel-helper-regexbabel-helper-remap-async-to-generatorbabel-helper-remove-or-voidbabel-helper-replace-supersbabel-helper-to-multiple-sequence-expressionsbabel-helpersbabel-messagesbabel-plugin-check-es2015-constantsbabel-plugin-minify-builtinsbabel-plugin-minify-constant-foldingbabel-plugin-minify-dead-code-eliminationbabel-plugin-minify-flip-comparisonsbabel-plugin-minify-guarded-expressionsbabel-plugin-minify-infinitybabel-plugin-minify-mangle-namesbabel-plugin-minify-numeric-literalsbabel-plugin-minify-replacebabel-plugin-minify-simplifybabel-plugin-minify-type-constructorsbabel-plugin-syntax-async-functionsbabel-plugin-syntax-async-generatorsbabel-plugin-syntax-class-constructor-callbabel-plugin-syntax-class-propertiesbabel-plugin-syntax-decoratorsbabel-plugin-syntax-dynamic-importbabel-plugin-syntax-exponentiation-operatorbabel-plugin-syntax-export-extensionsbabel-plugin-syntax-flowbabel-plugin-syntax-jsxbabel-plugin-syntax-object-rest-spreadbabel-plugin-syntax-trailing-function-commasbabel-plugin-transform-async-generator-functionsbabel-plugin-transform-async-to-generatorbabel-plugin-transform-class-constructor-callbabel-plugin-transform-class-propertiesbabel-plugin-transform-decoratorsbabel-plugin-transform-es2015-arrow-functionsbabel-plugin-transform-es2015-block-scoped-functionsbabel-plugin-transform-es2015-block-scopingbabel-plugin-transform-es2015-classesbabel-plugin-transform-es2015-computed-propertiesbabel-plugin-transform-es2015-destructuringbabel-plugin-transform-es2015-for-ofbabel-plugin-transform-es2015-function-namebabel-plugin-transform-es2015-literalsbabel-plugin-transform-es2015-modules-commonjsbabel-plugin-transform-es2015-object-superbabel-plugin-transform-es2015-parametersbabel-plugin-transform-es2015-shorthand-propertiesbabel-plugin-transform-es2015-spreadbabel-plugin-transform-es2015-sticky-regexbabel-plugin-transform-es2015-template-literalsbabel-plugin-transform-es2015-typeof-symbolbabel-plugin-transform-es2015-unicode-regexbabel-plugin-transform-exponentiation-operatorbabel-plugin-transform-export-extensionsbabel-plugin-transform-flow-strip-typesbabel-plugin-transform-inline-consecutive-addsbabel-plugin-transform-member-expression-literalsbabel-plugin-transform-merge-sibling-variablesbabel-plugin-transform-minify-booleansbabel-plugin-transform-object-rest-spreadbabel-plugin-transform-property-literalsbabel-plugin-transform-react-display-namebabel-plugin-transform-react-jsxbabel-plugin-transform-react-jsx-sourcebabel-plugin-transform-regeneratorbabel-plugin-transform-regexp-constructorsbabel-plugin-transform-remove-consolebabel-plugin-transform-remove-debuggerbabel-plugin-transform-remove-undefinedbabel-plugin-transform-simplify-comparison-operatorsbabel-plugin-transform-strict-modebabel-plugin-transform-undefined-to-voidbabel-polyfillbabel-preset-stage-2babel-preset-stage-3babel-registerbabel-runtimebabel-templatebabel-traversebabel-typesbabylonbalanced-matchbasebase64-jsbcrypt-pbkdfbin-versionbin-version-checkbinary-extensionsbit-twiddlebrace-expansionbracesbuffercache-basecall-bindcallsitescamelcasecamelcase-keyscaselesschalkchokidarclass-utilscollection-visitcolor-convertcolor-namecombined-streamcommandercomponent-emitterconcat-mapcontains-pathconvert-source-mapcopy-descriptorcore-jscore-util-iscross-spawncurrently-unhandledcwise-compilerdashdashdebugdecamelizedecode-uri-componentdeep-isdefine-propertiesdefine-propertydelayed-streamdetect-indentdoctrinedupecc-jsbnemoji-regexenquirererror-exes-abstractes-to-primitiveescape-string-regexpeslint-import-resolver-nodeeslint-module-utilseslint-scopeeslint-utilseslint-visitor-keysespreeesprimaesqueryesrecurseestraverseesutilsexpand-bracketsexpand-rangeextendextend-shallowextglobextsprintffast-deep-equalfast-json-stable-stringifyfast-levenshteinfile-entry-cachefilename-regexfill-rangefind-upfind-versionsflat-cacheflattedfor-infor-ownforever-agentform-datafragment-cachefs-readdir-recursivefs.realpathfunction-bindfunctional-red-black-treeget-intrinsicget-stdinget-valuegetpassgl-constantsgl-format-compiler-errorgl-reactgl-react-domgl-shaderglobglob-baseglob-parentglobalsglsl-shader-nameglsl-tokenizergraceful-fshar-schemahar-validatorhashas-ansihas-flaghas-symbolshas-valuehas-valueshome-or-tmphosted-git-infohttp-signatureieee754ignoreimport-freshimurmurhashindent-stringinflightinheritsinternal-slotinvariantiota-arrayis-accessor-descriptoris-arrayishis-binary-pathis-bufferis-callableis-core-moduleis-data-descriptoris-date-objectis-descriptoris-dotfileis-equal-shallowis-extendableis-extglobis-finiteis-globis-negative-zerois-numberis-plain-objectis-posix-bracketis-primitiveis-regexis-stringis-symbolis-typedarrayis-utf8is-windowsisarrayisexeisobjectisstreamjs-tokensjs-yamljsbnjsescjson-schemajson-schema-traversejson-stable-stringify-without-jsonifyjson-stringify-safejson5jsprimjsx-ast-utilskind-oflevnload-json-filelocate-pathlodashlog-symbolsloose-envifyloud-rejectionmap-cachemap-objmap-visitmath-randommeowmicromatchmime-dbmime-typesminimatchminimistmixin-deepmkdirpmsnanomatchnatural-comparendarrayndarray-opsnormalize-package-datanormalize-pathoauth-signobject-assignobject-copyobject-inspectobject-keysobject-visitobject.assignobject.entriesobject.fromentriesobject.omitobject.pickobject.valuesonceoptionatoros-homediros-tmpdiroutput-file-syncp-limitp-locatep-trypad-leftparent-moduleparse-globpascalcasepath-existspath-is-absolutepath-keypath-parsepath-typeperformance-nowpicocolorspinkiepinkie-promisepkg-dirposix-character-classesprelude-lspreserveprivateprocess-nextick-argsprogressprop-typespslpunycodeqsrafrandomaticreactreact-isread-pkgread-pkg-upreaddirpredentregenerateregenerator-runtimeregenerator-transformregex-cacheregex-notregexp.prototype.flagsregexppregexpu-coreregjsgenregjsparserremove-trailing-separatorrepeat-elementrepeat-stringrepeatingrequestrequire-from-stringresolveresolve-fromresolve-urlretrimrafsafe-buffersafe-regexsafer-buffersemversemver-regexsemver-truncateset-valueshebang-commandshebang-regexside-channelsignal-exitslashsnapdragonsnapdragon-nodesnapdragon-utilsource-mapsource-map-resolvesource-map-supportsource-map-urlspdx-correctspdx-exceptionsspdx-expression-parsespdx-license-idssplit-stringsprintf-jssshpkstatic-extendstring-widthstring.prototype.matchallstring.prototype.trimendstring.prototype.trimstartstrip-ansistrip-bomstrip-indentstrip-json-commentssupports-colortabletext-tablethrough2to-fast-propertiesto-object-pathto-regextough-cookietrim-newlinestrim-righttsconfig-pathstunnel-agenttweetnacltype-checktypedarray-poolunion-valueuniqunset-valueuri-jsurixuseuser-homeutil-deprecateuuidv8-compile-cachev8flagsvalidate-npm-package-licenseverrorweakmap-shimwebgltexture-loaderwebgltexture-loader-domwebgltexture-loader-dom-canvaswebgltexture-loader-dom-image-urlwebgltexture-loader-dom-videowebgltexture-loader-ndarraywhichword-wrapwrappyxtend
0.6.0

25 days ago