首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像处理java,处理像素

图像处理java,处理像素
EN

Stack Overflow用户
提问于 2015-03-09 20:31:13
回答 2查看 943关注 0票数 0

我正在研究图像加密和解密算法。我想让图像像素失真。我想要得到每个像素值,然后按我想要的方式对这些像素值进行排序,这样图像的像素就会失真,图像就会改变。我是在朝礼仪方向走吗?有什么提示吗?或者是能帮到我的算法示例。

代码语言:javascript
复制
Idea:

我有一张10*10像素的图像。这意味着图像由100像素组成。如果我选择图像的第一个像素行,它是10像素,我将这些像素转换为二进制,然后转换为十进制。现在我得到了10个十进制值的像素。我以我想要的方式对这些值进行排序。现在将十进制值转换为二进制值,并将转换为像素。第一行的图像像素现在已失真。

EN

回答 2

Stack Overflow用户

发布于 2015-03-09 20:42:40

我不会再认为这是“图像”了。

基本上,您有一个"0-255“数字数组,并且您希望隐藏它们的值和顺序。唯一的限制是您希望保持值的范围(0-255)和计数-因此您不能使用通用算法,因为它们也会更改...

我建议做一些混洗,然后按某种模式改变值。它很容易实现,而且图片将无法识别。

还要记住,密码应该是定义图片修改方式的参数。

票数 0
EN

Stack Overflow用户

发布于 2015-03-09 21:05:54

有很多方法可以做到这一点。一种简单的方法:

  • 获取所有像素的红、绿、蓝(0-255)值并放入单个字节数组中。
  • 对字节数组进行加密。
  • 将加密值设置回像素。

您可以直接使用像素的字节数组。但是,为了说明,下面的示例使用图像处理框架单独访问像素。代码在任何意义上都不会更改图像。它只是说明了如何访问和设置像素值。

代码语言:javascript
复制
    // Loading an image
    MarvinImage image = MarvinImageIO.loadImage("image.png");

    for (int x = 0; x < image.getWidth(); x++) {
        for (int y = 0; y < image.getHeight(); y++) {

            // 2. Accessing pixel at x,y
            int red = image.getIntComponent0(x, y); 
            int green = image.getIntComponent1(x, y); 
            int blue = image.getIntComponent2(x, y);

            // 3. Setting values back to pixel at x,y
            image.setIntColor(x,y,red,green,blue);                 
        } 
    }

    // 4. Saving image
    MarvinImageIO.saveImage(image, "image_out.png");

警告:不使用像JPEG这样的压缩图像格式。它们会稍微改变像素值,因此您无法取回这些值。尝试使用像PNG这样的格式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28942069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档