Code Monkey home page Code Monkey logo

as-dithered-image's People

Contributors

andrewstephens75 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

as-dithered-image's Issues

Ideas for future improvements

Random ideas for the future (in no particular order)

Make sure none of these changes break printing

  • add image-rendering: crisp-edges or pixilated to the canvas css
  • have another attempt at handling fractional device pixel ratios
  • cache the src image once, don't load it every time
  • automatically apply the aspect ratio when the new image loads
  • do something if the image fails to load (show placeholder icon?)
  • Move dithering to worker. Cancel outstanding operations on subsequent resizing.
  • Try to reduce redraws during resizing - possibly defer resizing until no resize events have been seen for 10ms or something
  • defer resizing if the component is off-screen, performing the operation just as it scrolls into view with the Intersection API : https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
  • display something during resizing, a placeholder image or icon.
  • support a dither attribute to swap in alternate dithers (Sierra dithering looks interesting https://github.com/nwj/dither)
  • support a threshold attribute to control the threshold between light and dark (0.0 - 1.0, 0.5 is the default)
  • support dark and light attributes to control the color of the resulting image. Do we dither assuming these will be black and white and then just force the color or actually dither to those colors (much harder)?
  • maybe have a setting to set one of the colors to transparent (for slightly off-white backgrounds, etc)
  • have another attempt at extending the img tag. We cannot get access to the image data but perhaps you can fetch the src and render a replacement canvas over the top.

Object-fit: cover?

Hi @andrewstephens75 . Thanks for this component. I'm hoping to possibly use it in a small festival site that is using diffused dithered images in its marketing campaign.

Can the component be used for a full width and height image background layer that fills the viewport in an object-fit: cover manner?

I've tried a few things but not sure if it's worth pursuing further if the underlying component doesn't really support it.

Thanks!

Support ordered dithering?

Hey! Having a lot of fun implementing things with this little script and I'm enjoying the results. Thanks for writing this!

Would it be possible to add ordered/Bayer dithering as an option?

Ordered dithering produces "worse" results than Atkinson dithering because of the visible cross-hatch effect, but some of us (me) think that effect is cool :)

And on the plus side, ordered dithering is very fast to execute.

image image image

Improve rendering speed w/ caching

Really cool component.

Here are some quick thoughts (could be a pull-request but I just wanted to put this out there):

  • How about using gray-scale images as placeholders during resizing operations? Use the browser's native (fast) rescaling for "smooth" resizing. Then, dither only when the resizing stops or is paused.
  • Also, you could use the Cache API to cache the dithered versions so if the user resizes again to the same size (likely), you incur no dithering lag/cost? https://medium.com/javascript-dots/cache-api-in-javascript-644380391681

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.