首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java中翻转图像

在java中翻转图像
EN

Stack Overflow用户
提问于 2015-09-16 21:17:29
回答 2查看 3.7K关注 0票数 0

我试图用java翻转一个图像,但是我遇到了一个问题,我就是搞不清楚。

使用双换循环,我正在遍历组织映像中的所有像素值,并将它们复制到像素中的新图像(宽度-x-1,y)。

下面的图片描述了当我运行该方法时会发生什么。

http://tinypic.com/r/nqzsiu/8

新的图像,似乎只通过1/10的图像高度,出于某种原因。这是为什么,我该怎么解决呢?

代码语言:javascript
运行
复制
private Image img;
private Pixel pixel;
private Image newimg;
private Pixel newpixel;

public advancedFilters(Image img)
{
    this.img = img;
}

public Image Mirror(){
    newimg = new Image(img.getWidth(), img.getHeight(), "newimage");
    int curtone;
    for (int j=0; j<img.getHeight(); j++) {
        for (int i=0; i<img.getWidth(); i++) {
            pixel = img.getPixel(i,j);
            curtone = pixel.getValue();
            newpixel = newimg.getPixel(newimg.getWidth()-i-1, j);
            newpixel.setValue(curtone);

        }
    }
    return newimg;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-16 23:06:38

为什么要将临时值private Pixel pixelprivate Pixel newpixel存储在使用它们的作用域之外?这是不必要的(至少从您发布的代码中),而且是自找麻烦。尝试实现您的算法(这似乎是正确的),而不是:

代码语言:javascript
运行
复制
private Image img;
private Pixel pixel;
private Image newimg;
private Pixel newpixel;

public advancedFilters(Image img)
{
    this.img = img;
}

public Image Mirror(){
    newimg = new Image(img.getWidth(), img.getHeight(), "newimage");
    for (int j=0; j<img.getHeight(); j++) {
        for (int i=0; i<img.getWidth(); i++) {
            Pixel oldPixel = img.getPixel(i,j);
            int oldPixelVal = oldPixel.getValue();
            Pixel mirrorPixel = newimg.getPixel((newimg.getWidth()-i-1), j);
            mirrorPixel.setValue(curtone);

        }
    }
    return newimg;
}
票数 1
EN

Stack Overflow用户

发布于 2015-09-17 13:56:01

这并不包含完整的问题。在返回之前,只需调用newImg.pixelsUpdated();。但是StackOverflow用户不可能知道这一点。

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

https://stackoverflow.com/questions/32618888

复制
相关文章

相似问题

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