mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-02 18:26:27 +13:00
When auto cropping if pixel alpha is 0 then ignore rest of color channels
This commit is contained in:
parent
f6852a1592
commit
7e7f456ee3
1 changed files with 12 additions and 4 deletions
|
@ -1721,13 +1721,15 @@ public static Rectangle FindAutoCropRectangle(Bitmap bmp, bool sameColorCrop = f
|
||||||
bool leave = false;
|
bool leave = false;
|
||||||
|
|
||||||
ColorBgra checkColor = unsafeBitmap.GetPixel(0, 0);
|
ColorBgra checkColor = unsafeBitmap.GetPixel(0, 0);
|
||||||
|
uint mask = checkColor.Alpha == 0 ? 0xFF000000 : 0xFFFFFFFF;
|
||||||
|
uint check = checkColor.Bgra & mask;
|
||||||
|
|
||||||
// Find X (Left to right)
|
// Find X (Left to right)
|
||||||
for (int x = 0; x < bmp.Width && !leave; x++)
|
for (int x = 0; x < bmp.Width && !leave; x++)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < bmp.Height; y++)
|
for (int y = 0; y < bmp.Height; y++)
|
||||||
{
|
{
|
||||||
if (unsafeBitmap.GetPixel(x, y) != checkColor)
|
if ((unsafeBitmap.GetPixel(x, y).Bgra & mask) != check)
|
||||||
{
|
{
|
||||||
crop.X = x;
|
crop.X = x;
|
||||||
leave = true;
|
leave = true;
|
||||||
|
@ -1747,6 +1749,8 @@ public static Rectangle FindAutoCropRectangle(Bitmap bmp, bool sameColorCrop = f
|
||||||
if (!sameColorCrop)
|
if (!sameColorCrop)
|
||||||
{
|
{
|
||||||
checkColor = unsafeBitmap.GetPixel(0, 0);
|
checkColor = unsafeBitmap.GetPixel(0, 0);
|
||||||
|
mask = checkColor.Alpha == 0 ? 0xFF000000 : 0xFFFFFFFF;
|
||||||
|
check = checkColor.Bgra & mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find Y (Top to bottom)
|
// Find Y (Top to bottom)
|
||||||
|
@ -1754,7 +1758,7 @@ public static Rectangle FindAutoCropRectangle(Bitmap bmp, bool sameColorCrop = f
|
||||||
{
|
{
|
||||||
for (int x = 0; x < bmp.Width; x++)
|
for (int x = 0; x < bmp.Width; x++)
|
||||||
{
|
{
|
||||||
if (unsafeBitmap.GetPixel(x, y) != checkColor)
|
if ((unsafeBitmap.GetPixel(x, y).Bgra & mask) != check)
|
||||||
{
|
{
|
||||||
crop.Y = y;
|
crop.Y = y;
|
||||||
leave = true;
|
leave = true;
|
||||||
|
@ -1768,6 +1772,8 @@ public static Rectangle FindAutoCropRectangle(Bitmap bmp, bool sameColorCrop = f
|
||||||
if (!sameColorCrop)
|
if (!sameColorCrop)
|
||||||
{
|
{
|
||||||
checkColor = unsafeBitmap.GetPixel(bmp.Width - 1, 0);
|
checkColor = unsafeBitmap.GetPixel(bmp.Width - 1, 0);
|
||||||
|
mask = checkColor.Alpha == 0 ? 0xFF000000 : 0xFFFFFFFF;
|
||||||
|
check = checkColor.Bgra & mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find Width (Right to left)
|
// Find Width (Right to left)
|
||||||
|
@ -1775,7 +1781,7 @@ public static Rectangle FindAutoCropRectangle(Bitmap bmp, bool sameColorCrop = f
|
||||||
{
|
{
|
||||||
for (int y = 0; y < bmp.Height; y++)
|
for (int y = 0; y < bmp.Height; y++)
|
||||||
{
|
{
|
||||||
if (unsafeBitmap.GetPixel(x, y) != checkColor)
|
if ((unsafeBitmap.GetPixel(x, y).Bgra & mask) != check)
|
||||||
{
|
{
|
||||||
crop.Width = x - crop.X + 1;
|
crop.Width = x - crop.X + 1;
|
||||||
leave = true;
|
leave = true;
|
||||||
|
@ -1789,6 +1795,8 @@ public static Rectangle FindAutoCropRectangle(Bitmap bmp, bool sameColorCrop = f
|
||||||
if (!sameColorCrop)
|
if (!sameColorCrop)
|
||||||
{
|
{
|
||||||
checkColor = unsafeBitmap.GetPixel(0, bmp.Height - 1);
|
checkColor = unsafeBitmap.GetPixel(0, bmp.Height - 1);
|
||||||
|
mask = checkColor.Alpha == 0 ? 0xFF000000 : 0xFFFFFFFF;
|
||||||
|
check = checkColor.Bgra & mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find Height (Bottom to top)
|
// Find Height (Bottom to top)
|
||||||
|
@ -1796,7 +1804,7 @@ public static Rectangle FindAutoCropRectangle(Bitmap bmp, bool sameColorCrop = f
|
||||||
{
|
{
|
||||||
for (int x = 0; x < bmp.Width; x++)
|
for (int x = 0; x < bmp.Width; x++)
|
||||||
{
|
{
|
||||||
if (unsafeBitmap.GetPixel(x, y) != checkColor)
|
if ((unsafeBitmap.GetPixel(x, y).Bgra & mask) != check)
|
||||||
{
|
{
|
||||||
crop.Height = y - crop.Y + 1;
|
crop.Height = y - crop.Y + 1;
|
||||||
leave = true;
|
leave = true;
|
||||||
|
|
Loading…
Reference in a new issue