加扰图像?

时间:2014-01-31 19:49:11

标签: php css image encryption

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

无论如何,我第一次真的在谷歌游戏上买了一些漫画,真的很想知道谷歌将如何保护他们的漫画图像。

google scramble

css

看起来他们争抢图像然后在阅读器中重新组装它们!真的很酷吗?

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

使用像ImageMagick这样的工具,我可以在相同的块(like so)中裁剪图像,然后将它们拼接在一起,但我真的不确定浏览器端。我想像是在加载页面时会调用某种键或种子来确定所有内容的去向,但我不确定如何实现它。

所以我的问题是你真的会如何实现这样的东西?每个图像都有一个键或者可能被主键锁定。但除了图像加扰之外,还有一个特定的名称吗?或者是执行此类操作的现有库/系统。我想更多地阅读它,或者甚至可以看到它的更多例子

更新:

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

另一个更新:

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

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我在Visual Basic 6中编写了类似这样的东西,用于显示图片迷你游戏...但我使用了Bitblt图形功能,让我可以制作块。我定义了一个二维数组并在tile上随机分配了块,并且在每个tile上我存储了块实际上在非加扰图像中的X和Y位置。

答案 3 :(得分:0)

ImageMagick将一次性为您完成平铺:

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

会将您的图片(in.jpg)整理成64px到64px的图块,并将其命名为tile1.jpgtile2.jpg等。

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