清除图片周围的空白区域
using System; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; namespace ConsoleApplication1 { class ImageUtil { public static void ClearBlank(string sourceFileName,out int x,out int y,out int w,out int h)
{
using (var image = new Bitmap(sourceFileName))
{
//获取图像的BitmapData对像
var data = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
//循环处理
var minW = 1000000;
var maxW = 0;
var minH = 1000000;
var maxH = 0;
unsafe
{
byte* ptr = (byte*)(data.Scan0.ToPointer());
for (var i = 0; i < data.Height; i++)
{
for (var j = 0; j < data.Width; j++)
{
var a = Convert.ToInt32(ptr[0].ToString());
var b = Convert.ToInt32(ptr[1].ToString());
var c = Convert.ToInt32(ptr[2].ToString());
if (a < 150 && b < 150 && c < 150)
{
if ((j + 1) > maxW)
{
maxW = j + 1;
}
if ((i + 1) > maxH)
{
maxH = i + 1;
}
if ((j + 1) < minW)
{
minW = j + 1;
}
if ((i + 1) < minH)
{
minH = i + 1;
}
}
ptr += 3;
}
ptr += data.Stride - data.Width * 3;
}
}
x = minW;
y = minH;
w = maxW - minW;
h = maxH - minH;
}
} } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2015-01-10 Bringing up interface eth0: Determining if ip address 10.109.67.81 is already in use for device eth0...