2014-01-14 2 views
0

Я рисую BufferedImageКак я могу сделать BufferedImage «более слабым»?

BufferedImage map = ImageIO.read(getClass().getResource("map.png")); 

, но я хотел бы либо а) поставить белее фильтр сверху, или б) изменить значение альфа, так что это не так ярко. Я пробовал

for (int x = 0; x < map.getWidth(); x++) { 
     for (int y = 0; y < map.getHeight(); y++) 
     { 
      int tempcolor = map.getRGB(x, y); 
      int newalpha = (60 << 24) | (tempcolor & 0x00ffffff); 
      map.setRGB(x, y, newalpha); 
     } 
     } 
g.drawImage(map, 0, 0, this); 

но изображение выглядит точно так же, как оригинал. Есть идеи?

+1

Альфа только позволит нижний слой чтобы показать. Если нет нижнего слоя, ничего не происходит. –

+0

Это имеет смысл. Поэтому я могу добавить белый слой за ним, и это должно устранить проблему. – Martin

+0

Хотя, вероятно, медленнее, чем использование 'RescaleOp', ваш исходный код должен работать, если у вас есть тип изображения (BufferedImage.TYPE_xxx), который поддерживает альфу, например' BufferedImage.TYPE_INT_ARGB'. – haraldK

ответ

4

вы можете использовать RescaleOp, потому что ручки альфа,

RescaleOp rescale = new RescaleOp(1.2f, 15, null); 
    rescaleOp.filter(image, image); // Source and destination are the same. 

см это link также может помочь вам больше

более link here для регулировки яркости один

Смежные вопросы