.Net中处理Bitmap类像素大小

MSDN上并没有告诉我们使用Bitmap的构造函数
Bitmap(Int32, Int32)  --用指定的大小初始化 Bitmap 类的新实例。 
时的长宽最大多少。
在国内网站,能够查出来的资料都是说按照Int32的最大值,因为参数的确是Int32,
但是要知道,这个大小是2,147,483,647。
如果按照Int32的最大值来初始化Bitmap,必定会出错。

在国外网站上终于找到了答案:
按照32位程序调试或编译:不超过1GB
按照64位程序调试或编译:不超过2GB
那么按照Imaging.PixelFormat.Format24bppRgb(即指定格式为每像素 24 位;红色、绿色和蓝色分量各使用 8 位来计算)的简化算法为:
32位:长*宽*3/1024/1024<1000(MB)
64位:长*宽*3/1024/1024<2000(MB)

以下两种情况:
1、直接传递具体数值给构造函数:
Dim bmp As New Bitmap(13735,63257)
会直接抛出错误:参数无效

2、width、height是变量,经过计算后才能获得值:
Dim bmp As New Bitmap(width,height)  
会直接返回bmp为nothing

VB.net和c#在开发时候一定要注意这个问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 在.NET Core,可以使用不同的方法来计算两张图片的相似度。下面是两种常见的方法: 1. 基于像素比较:这种方法是比较两张图片每个像素的RGB值,并计算它们之间的差异。可以使用.NET Core的Image将图片加载到内存,然后逐个像素进行比较。对于每个像素,可以计算RGB值之间的欧氏距离或其他相似性度量。最后,可以对所有像素的差异进行加权平均,得到图片的相似度。 2. 基于特征提取:这种方法是首先对图片进行特征提取,然后比较提取到的特征之间的差异。在.NET Core,可以使用一些开源的机器学习库,如Accord.NET或TensorFlow.NET来提取图像特征。常见的特征提取方法包括使用卷积神经网络提取图像的深度特征或使用图像处理算法提取纹理、形状等特征。提取到的特征可以使用欧氏距离、余弦相似度等度量来计算相似度。 需要注意的是,图像相似度的计算是一个复杂的问题,没有一种通用的方法适用于所有情况。不同的方法可能适用于不同的图像型和相似度要求。此外,图像大小、亮度、旋转等因素也会对相似度的计算结果产生影响。因此,在实际应用,需要根据具体需求选择合适的方法,并通过实验验证其准确性和可靠性。 ### 回答2: .NET Core 平台提供了一些工具和库可以用于对两张图片的相似度进行比较。根据需求和具体问题,可以使用以下两种不同的方法。 1. 使用图像处理库:借助.NET Core平台上可用的图像处理库,可以对两张图片进行相似度比较。可以先将两张图片转换为可以进行图像处理的格式(如Bitmap),然后使用图像处理库提供的算法进行比较。常用的图像处理库包括Emgu CV、AForge.NET等,它们提供了一些图像相似度度量的算法,如结构相似性指数(SSIM)、均方误差(MSE)等。通过计算这些度量值,可以得到两张图片的相似度指标。 2. 使用机器学习算法:除了传统的图像处理库,还可以使用机器学习算法对图片进行相似度比较。在.NET Core平台上,可以使用ML.NET或TensorFlow.NET等机器学习库来训练模型,并使用这些模型来计算图片的相似度。具体流程包括:首先,使用一些已知相似度的图片对来训练机器学习模型;接着,使用该模型对新的图片进行预测,得到图片的相似度。这种方法可以通过训练更加复杂的模型,获取更准确的相似度结果。 需要注意的是,无论选择哪种方法,对于大规模图片的相似度比较,可能需要考虑性能和资源的问题。可以根据具体需求调整算法的复杂度和使用的技术工具,以平衡准确度和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值