我的问题可能是非常基本的,但我以前从未做过的事情,所以我假设它可以用Java(我确定它是,我只是不知道如何)。基本上我有3个我想操纵的对象(3 BufferedImage
s)。例如,我希望能够改变亮度和对比度,我可以这样做。通过这样做,我必须为每个代码完全相同的图像创建一个单独的方法。例如:
public void increaseBrightnessGreen() {
RescaleOp rescaleOp = new RescaleOp(1.0f, 10, null);
rescaleOp.filter(greenImage, greenImage);
updateGreen();
}
然后重复红色和蓝色,然后再重复3次以降低亮度,这是相当多的代码,这是非常相似的东西。当然,这种情况经常适用,亮度示例只是其中的一个,导入图像的方法是相同的,除了更改一些变量和对比度也类似于上面。我不知道这是否重要,但我的所有代码都在一个单独的类中。
正如我所说,我确信有一种方法可以减少所有这些过多的代码重复,我只是不知道如何。
答案 0 :(得分:1)
让方法接受它应该修改的参数。它也可以包含RescaleOp
,因此您无需创建3次(并允许使用不同的RescaleOp
。
public void increaseBrightness( BufferedImage image )
{
RescaleOp rescaleOp = new RescaleOp( 1.0f, 10, null );
rescaleOp.filter( image, image );
// Don't know what updateGreen does but you could probably do something similar there
updateImage( image );
}
然后使用想要increaseBrightness
的图像调用方法。
increaseBrightness( greenImage );
increaseBrightness( redImage );
increaseBrightness( blueImage );
public void increaseBrightness( BufferedImage image, RescaleOp rescaleOp )
{
rescaleOp.filter( image, image );
// Don't know what updateGreen does but you could probably do something similar there
updateImage( image );
}
并在创建RescaleOp
RescaleOp rescaleOp = new RescaleOp( 1.0f, 10, null );
increaseBrightness( greenImage, rescaleOp );
increaseBrightness( redImage, rescaleOp );
increaseBrightness( blueImage, rescaleOp );
答案 1 :(得分:0)
当然,有一种方法可以不重复方法并制作更多功能的方法!但是你也必须在这个例子中重复足够的代码..
首先在你班上制作3个静力学:
static int GREEN = 1;
static int RED = 2;
static int BLUE = 3;
然后为所有
制作你的ONE方法public void adjustBrightness(int color, boolean increase) {
if (increase){
if (color == BLUE){
//code for blue increment
}
if (color == GREEN){
//code for green increment
}
if (color == RED){
//code for red increment
}
else{ //decrease brightness
if (color == BLUE){
//code for blue
}
if (color == GREEN){
//code for green
}
if (color == RED){
//code for red
}
}
}
你可以很好地调用这个方法 adjustBrightness(BLUE,true);
或者如果你想让它更像本地语言,那就再制作2个静态词:
static boolean INCREASE = true;
static boolean DECREASE = false;
所以现在你可以:
adjustBrightness(BLUE, INCREASE);
与最后一个相同;