Browse Source

Optimize Alpha

pull/221/head
James Jackson-South 9 years ago
parent
commit
9439077769
  1. 32
      src/ImageSharp/Processing/Processors/Effects/AlphaProcessor.cs
  2. 4
      tests/ImageSharp.Tests/Processors/Filters/AlphaTest.cs

32
src/ImageSharp/Processing/Processors/Effects/AlphaProcessor.cs

@ -61,26 +61,22 @@ namespace ImageSharp.Processing.Processors
startY = 0;
}
Vector4 alphaVector = new Vector4(1, 1, 1, this.Value);
var alphaVector = new Vector4(1, 1, 1, this.Value);
using (PixelAccessor<TPixel> sourcePixels = source.Lock())
{
Parallel.For(
minY,
maxY,
this.ParallelOptions,
y =>
Parallel.For(
minY,
maxY,
this.ParallelOptions,
y =>
{
Span<TPixel> row = source.GetRowSpan(y - startY);
for (int x = minX; x < maxX; x++)
{
int offsetY = y - startY;
for (int x = minX; x < maxX; x++)
{
int offsetX = x - startX;
TPixel packed = default(TPixel);
packed.PackFromVector4(sourcePixels[offsetX, offsetY].ToVector4() * alphaVector);
sourcePixels[offsetX, offsetY] = packed;
}
});
}
ref TPixel pixel = ref row[x - startX];
pixel.PackFromVector4(pixel.ToVector4() * alphaVector);
}
});
}
}
}

4
tests/ImageSharp.Tests/Processors/Filters/AlphaTest.cs

@ -22,7 +22,7 @@ namespace ImageSharp.Tests
[Theory]
[MemberData(nameof(AlphaValues))]
public void ImageShouldApplyAlphaFilter(int value)
public void ImageShouldApplyAlphaFilter(float value)
{
string path = this.CreateOutputDirectory("Alpha");
@ -39,7 +39,7 @@ namespace ImageSharp.Tests
[Theory]
[MemberData(nameof(AlphaValues))]
public void ImageShouldApplyAlphaFilterInBox(int value)
public void ImageShouldApplyAlphaFilterInBox(float value)
{
string path = this.CreateOutputDirectory("Alpha");

Loading…
Cancel
Save