1
好吧我不知道這是可能的編程或不與任何軟件,但讓我們學習它。如何從PNG圖像中刪除空白區域並重新保存它們
現在讓我用實例來說明它
我使用paint.net魔術棒公差爲0%
空白
這裏空的空間刪除版本
這可能通過任何軟件做如C#或Photoshop等
我需要做的批量處理
TY
好吧我不知道這是可能的編程或不與任何軟件,但讓我們學習它。如何從PNG圖像中刪除空白區域並重新保存它們
現在讓我用實例來說明它
我使用paint.net魔術棒公差爲0%
空白
這裏空的空間刪除版本
這可能通過任何軟件做如C#或Photoshop等
我需要做的批量處理
TY
我真的不知道這是否回答您的問題或沒有,但我希望它
這裏有一個代碼從Darren
public static Bitmap Crop(Bitmap bmp)
{
int w = bmp.Width;
int h = bmp.Height;
Func<int, bool> allWhiteRow = row =>
{
for (int i = 0; i < w; ++i)
if (bmp.GetPixel(i, row).R != 255)
return false;
return true;
};
Func<int, bool> allWhiteColumn = col =>
{
for (int i = 0; i < h; ++i)
if (bmp.GetPixel(col, i).R != 255)
return false;
return true;
};
int topmost = 0;
for (int row = 0; row < h; ++row)
{
if (allWhiteRow(row))
topmost = row;
else break;
}
int bottommost = 0;
for (int row = h - 1; row >= 0; --row)
{
if (allWhiteRow(row))
bottommost = row;
else break;
}
int leftmost = 0, rightmost = 0;
for (int col = 0; col < w; ++col)
{
if (allWhiteColumn(col))
leftmost = col;
else
break;
}
for (int col = w - 1; col >= 0; --col)
{
if (allWhiteColumn(col))
rightmost = col;
else
break;
}
if (rightmost == 0) rightmost = w; // As reached left
if (bottommost == 0) bottommost = h; // As reached top.
int croppedWidth = rightmost - leftmost;
int croppedHeight = bottommost - topmost;
if (croppedWidth == 0) // No border on left or right
{
leftmost = 0;
croppedWidth = w;
}
if (croppedHeight == 0) // No border on top or bottom
{
topmost = 0;
croppedHeight = h;
}
try
{
var target = new Bitmap(croppedWidth, croppedHeight);
using (Graphics g = Graphics.FromImage(target))
{
g.DrawImage(bmp,
new RectangleF(0, 0, croppedWidth, croppedHeight),
new RectangleF(leftmost, topmost, croppedWidth, croppedHeight),
GraphicsUnit.Pixel);
}
return target;
}
catch (Exception ex)
{
throw new Exception(
string.Format("Values are topmost={0} btm={1} left={2} right={3} croppedWidth={4} croppedHeight={5}", topmost, bottommost, leftmost, rightmost, croppedWidth, croppedHeight),
ex);
}
}
去除環境從圖像
白色空間個
感謝,
我希望這有助於:)
+1快速和良好的答案。不過,我會將這些GetPixels更改爲LockBit。 – SimpleVar
@YoryeNathan非常感謝。很高興我能幫忙,祝你有個美好的一天:) –
謝謝你的回答。我會試着讓你知道:) – MonsterMMORPG