【问题标题】:Scrambling an image?扰乱图像?
【发布时间】:2021-03-24 03:31:01
【问题描述】:

我发现自己以多种不同的方式阅读漫画。我一直感兴趣的是漫画观众背后的公司如何减少盗版。例如comixology 使用flash。当然不是不可破解,但最能阻止。

无论如何,我真的是第一次在 google play 上买了一些漫画,并且很想知道 google 将如何保护他们的漫画图像。

似乎他们打乱了图像,然后在阅读器中动态地重新组合它们!真的很酷吗?

我希望能够真正重新创建并实现类似的效果。我了解背后的基本原理,并且已经非常粗略地得出了我如何做到这一点。

使用 ImageMagick 之类的工具,我可以将图像裁剪成相等的块 (like so),然后将它们缝合在一起,但我真的不确定浏览器端。我想象有某种键或种子在页面加载时被调用,它决定了一切的去向,但我不确定我将如何实现它。

所以我的问题是你将如何实施这样的事情?每个图像都有一个密钥,或者可能被一个主密钥锁定。但是除了图像加扰之外,还有一个特定的名称吗?或者一个现有的图书馆/系统做这种事情。我很乐意阅读更多内容,甚至可能会看到更多示例

更新:

我想我会根据我上面提供的链接中的代码试一试 Image Magick。我已经设法将图像分割成块,但它只是感觉非常低效切碎图像并创建实际文件。理想情况下,我想存储对这些裁剪图像的引用,然后直接放入新图像中。任何人都试图用imagemagick做类似的事情吗?加载时间相当长,感觉它可能会更有效率

另一个更新:

这段代码搞砸了一段时间,就花费的时间而言,它真的开始感觉有点不切实际。将图像处理成块/图块/您想要调用的任何内容可能需要一分钟以上的时间,这是在我将其调整为更易于管理的大小之后。我认为 PHP 不再是最好的选择了......或者我正在考虑让这个过程在桌面应用程序中运行,然后简单地上传完整的文件和一个将过程反转到 Web 服务器的密钥,所以所有它将被处理将是显示。我对 Python 和 C# 非常方便,所以我可以用其中一种语言来做。你们认为这会产生明显更好的性能吗?还是这只是我在这类事情上经常会遇到的问题?

【问题讨论】:

标签: php css image encryption


【解决方案1】:

HTML 似乎在一个简单的表格中显示图像。每个图像块都放在一个 TD 中。您的服务器端代码需要以正确的 TD 输出每个图像块,因此它首先需要知道您是如何创建这些块的。也许每个块的名称包括它的位置(“行”和“列”)。也许每个图像块文件名都存储在数据库中,以及“行”的值和“列”的值。也许每个图像块文件名都是按字母顺序排列的,它们只是按从左到右、从上到下的顺序显示。似乎有几种有趣的方法可以实现这一点!我很想听听您决定使用什么。

【讨论】:

    【解决方案2】:

    一旦您有了一种算法来打乱图像块数组,您就需要将其反转以在浏览器中显示它们。在浏览器中,他们一遍又一遍地显示一个图像,具有不同的偏移量(背景位置),就像一个精灵表。

    获得算法的一种方法是生成一个随机数数组(从 0 到块数,不重复),并将每个块 xarray[x] 对齐。为了计算偏移量,您必须在数组中搜索 array[x] 以找到 x 并将其乘以块的宽度。我认为没有任何真正的理由在加密图像中引入多行,但该过程与列数的高度调整/换行类似。

    【讨论】:

      【解决方案3】:

      我在 6 年前在 Visual Basic 中编写了类似的程序来显示图片迷你游戏……但我使用了 Bitblt 图形功能,它允许我制作块。我定义了一个二维数组并在图块上随机分配了块,并且在每个图块上我存储了块在非加扰图像中实际具有的 X 和 Y 位置。

      【讨论】:

        【解决方案4】:

        ImageMagick 会非常快速简单地为您一次性完成平铺:

        convert -crop 64x64 in.jpg tile%d.jpg
        

        这会将您的图像 (in.jpg) 分割成 64 x 64 像素的图块,并将它们命名为 tile1.jpgtile2.jpg 等。

        在我的 iMac 上,我可以在 0.18 秒内将 1000x12000 像素的图像分割成 304 块。

        【讨论】:

        • Tbh,我在一个低规格、受限制的共享主机上运行 imagemagick。我确实在 VPS 上产生了更好的结果......我从未解决的更大问题是将这些图块改组为种子随机顺序,然后像我原始帖子中的图像一样重新组装它们。可能应该回到它tbh ...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-15
        • 2019-05-09
        • 1970-01-01
        • 2014-05-02
        • 2012-07-02
        • 1970-01-01
        相关资源
        最近更新 更多