Brightness and Contrast for a canvas image with javascript

前端 未结 4 1628
眼角桃花
眼角桃花 2021-02-03 10:23

I have an image in a tag

var img = new Image();
ctx.drawImage(img,0,0,img.width,img.height);
ecc...

How is possible to change the Brightness

相关标签:
4条回答
  • 2021-02-03 10:57

    You can try this (c# code):

     Bitmap originalImage;
     Bitmap adjustedImage;
     double brightness = 1.0f; // no change in brightness
     double constrast = 2.0f; // twice the contrast
     double gamma = 1.0f; // no change in gamma
    
     float adjustedBrightness = brightness - 1.0f;
     float[][] ptsArray ={
                    new float[] {contrast, 0, 0, 0, 0}, // scale red
                    new float[] {0, contrast, 0, 0, 0}, // scale green
                    new float[] {0, 0, contrast, 0, 0}, // scale blue
                    new float[] {0, 0, 0, 1.0f, 0}, // don't scale alpha
                    new float[] {adjustedBrightness, adjustedBrightness, adjustedBrightness, 0, 1}};
    
     imageAttributes = new ImageAttributes();
     imageAttributes.ClearColorMatrix();
     imageAttributes.SetColorMatrix(new ColorMatrix(ptsArray), ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
     imageAttributes.SetGamma(gamma, ColorAdjustType.Bitmap);
     Graphics g = Graphics.FromImage(adjustedImage);
     g.DrawImage(originalImage, new Rectangle(0,0,adjustedImage.Width,adjustedImage.Height)
                ,0,0,bitImage.Width,bitImage.Height,
     GraphicsUnit.Pixel, imageAttributes);
    
    0 讨论(0)
  • 2021-02-03 10:59

    In my experience, fabric.js is the best javascript library for performing this. Check out Fabric JS and how to do image filtering at: http://fabricjs.com/image-filters

    0 讨论(0)
  • 2021-02-03 11:02

    There's at least one javascript library I know of which can do this, Pixastic

    Usage might look like this.

    Pixastic.process(canvas, 'brightness',
        {
            'brightness': 60,
            'contrast': 0.5,
            'leaveDOM': true
        },
        function(img) {
            ctx.drawImage(img, 0, 0);
        }
    );
    

    The library is kind of intended to work with images within your page and it replaces them with canvas elements which contain the rendered result.

    But in the code above I've passed in a canvas element rather than an image and included the 'leaveDOM' property to prevent the pixastic library from swapping your canvas in the DOM for the one it creates.

    To display the results I've included the callback function which just does ctx.drawImage to put the contents into your original canvas.

    Hope that makes sense.

    You can check the documentation for more examples. Pixastic Documentation

    0 讨论(0)
  • 2021-02-03 11:10

    you can try this , see comment

    <script type="application/javascript">  
    
    function clickMeEvent(obj)
    {
    if (obj.style.opacity=="0.9")
        {
        obj.style.opacity="0.7";
        }
    else if (obj.style.opacity=="0.7")
        {
        obj.style.opacity="0.5";        
        }
    else if (obj.style.opacity=="0.5")
        {
        obj.style.opacity="0.3";        
        }
    else if (obj.style.opacity=="0.3")
        {
        obj.style.opacity="0.1";        
        }
    else
        {
        obj.style.opacity="0.0";
    
        }
    }
    
    </script>
    

    0 讨论(0)
提交回复
热议问题