Яркость и контрастность для изображения на холсте с использованием JavaScript - PullRequest
12 голосов
/ 11 октября 2010

У меня есть изображение в теге

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

Как можно изменить Яркость и Контрастность этого изображения с помощью JavaScript?

Tnx

Ответы [ 4 ]

5 голосов
/ 11 октября 2010

Есть, по крайней мере, одна библиотека javascript, о которой я знаю, которая может это сделать, Pixastic

Использование может выглядеть следующим образом.

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

Библиотека вродепредназначен для работы с изображениями на вашей странице, и он заменяет их элементами холста, которые содержат результат визуализации.

Но в приведенном выше коде я передал элемент холста, а не изображение, и включил в себя поле exitDOM.свойство, которое не позволяет пиксельной библиотеке поменять ваш холст в DOM на тот, который он создает.

Для отображения результатов я включил функцию обратного вызова, которая просто выполняет ctx.drawImage, чтобы поместить содержимое в ваш оригинальный холст..

Надеюсь, что это имеет смысл.

Вы можете проверить документацию для большего количества примеров. Документация Pixastic

0 голосов
/ 12 августа 2014

По моему опыту, fabric.js - лучшая библиотека javascript для выполнения этого. Проверьте Fabric JS и как выполнить фильтрацию изображений по адресу: http://fabricjs.com/image-filters

0 голосов
/ 14 апреля 2014

Вы можете попробовать это, см. Комментарий

<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 голосов
/ 11 октября 2010

Вы можете попробовать это (код C #):

 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...