正在查看 1 个帖子:1-1 (共 1 个帖子)
  • 作者
    帖子
  • @168227 回复 ⚑举报 

    千江月
    游客

    Dezoomify下载、拼合图像时,常常由于网络不稳定,导致下载的图像中有缺失的“瓦片”,表现为图像中随机位置存在黑色区块。

    写了段代码,可以对任意一幅图像进行检查。

    /// <summary>
    /// 图像残损检查:如果图像中任何一个256*256的区块是纯黑色,则返回false
    /// </summary>
    /// <param name="imagePath"></param>
    /// <returns></returns>
    public static bool IsBadImage(string imagePath)
    {
    try
    {
    using (Bitmap bitmap = new Bitmap(imagePath))
    {
    int width = bitmap.Width;
    int height = bitmap.Height;
    for (int x = 0; x < width; x += 256)
    {
    for (int y = 0; y < height; y += 256)
    {
    int blockWidth = Math.Min(256, width - x);
    int blockHeight = Math.Min(256, height - y);
    
    if (!IsBlockPureBlack(bitmap, x, y, blockWidth, blockHeight))
    {
    return false;
    }
    }
    }
    }
    }
    catch (Exception ex)
    {
    Console.WriteLine($"Error processing image: {ex.Message}");
    return false;
    }
    return true;
    }
    static bool IsBlockPureBlack(Bitmap bitmap, int startX, int startY, int blockWidth, int blockHeight)
    {
    for (int x = startX; x < startX + blockWidth && x < bitmap.Width; x++)
    {
    for (int y = startY; y < startY + blockHeight && y < bitmap.Height; y++)
    {
    Color pixelColor = bitmap.GetPixel(x, y);
    if (pixelColor.R != 0 || pixelColor.G != 0 || pixelColor.B != 0)
    {
    return false;
    }
    }
    }
    return true;
    }

    调用IsBadImage(图像路径文本),如果返回false,则表明图像存在残损区块。

    对编程不熟悉的朋友,借助DeepSeek等工具,可以较为容易地基于以上代码,封装、生成自己的检测工具。

    抛转引玉,也欢迎编程大神们指导、完善。

正在查看 1 个帖子:1-1 (共 1 个帖子)
正在查看 1 个帖子:1-1 (共 1 个帖子)

上传图片

拖拽或点击选择图片(最多五张)

回复至:资源小工具1:Dezoomify拼合图像残损检查
您的信息:



发帖/回帖前,请了解相关版规

0,邮箱地址尽量真实有效,随意填写的可能会被系统误判为垃圾内容。
1,不要开书单。单个帖子尽量发布一种书籍需求。
2,在搜索不到相关主题的情况下,尽量发新帖(发帖标题最好带上书名)。不要在他人帖子中回复某种书籍需要。
3,发帖提问标题尽量简单明了。发帖内容不要太过简略,请对书籍内容、版本或作者作简要说明。
4,出版于1973年以后的资源需求或分享将会被清理删除。