`I'm sure Jim could word this better, but here goes...`
```
```
Opacity and alpha are mostly used interchangeably. Whether the range is expressed as a normalized value [0.0,1.0] or an 8-bit pixel value [0,255], the meaning is the same. A value of 0 means that the color is completely transparent. When using the default SRC_OVER blend equation, a pixel with this color will have no effect. A value of 1.0 (if using a normalized value) or 255 (if using an 8-bit integer value) means that the color is fully opaque. When using the default SRC_OVER blend equation, a pixel with this color will overwrite whatever is underneath it.
```
```
Perhaps Tom is thinking of "transparency" which, if we were to have such an attribute, would be defined as (1.0-opacity).
```
-- Kevin

Jasper Potts wrote:
```
My understanding is alpha and opacity are same just different range.
```Opacity is 0.0 to 1.0
Alpha is 0 to 255

```
Jim or Kevin will be authority on this.
```Jasper

```
```On Mar 16, 2014, at 5:55 AM, Tom Schindl <tom.schi...@bestsolution.at> wrote:

Hi,

Maybe I'm completely wrong but to me it looks like the opacity I get

If not mistaken the relation between alpha and opacity is expressed with:

opacity = (255 - alpha) / 255.0

which means:

opacity 0 => alpha 255
opacity 1 => alpha 0

Running the following programm on a gif

```
```public class OpacityBug extends Application {

@Override
public void start(Stage primaryStage) throws Exception {
Image image = new
Image(getClass().getResourceAsStream("methpri_obj.gif"));
int width = (int) image.getWidth();
int height = (int) image.getHeight();
```
```       for (int x = width - 1; x >= 0; x--) {
for (int y = height - 1; y >= 0; y--) {
int alphaArgb = (argb >> 24) & 0xFF;
double opacity = color.getOpacity();
System.err.println(x+","+y + " => alpha: " +  alphaArgb + " op: " + opacity + "
op-alpha: " + opacityToAlpha(opacity) + " color: " + color);
}
}
}
```
private static int opacityToAlpha(double opacity) {
```       return (int)Math.round((((opacity * 255.0) - 255) * -1));
}

public static void main(String[] args) {
Application.launch(args);
}
}
```
```produces and output like:
15,15 => alpha: 0 op: 0.0 op-alpha: 255 color: 0x00000000

which to my understanding is wrong. The argb value is correct (if
compared to the image because the pixel at 15,15 is fully transparent)
but then the the opacity should be 1.0 but is the opposite.

Looking at the code in Image I see:
```
```@Override
public Color getColor(int x, int y) {
int argb = getArgb(x, y);
int a = argb >>> 24;
int r = (argb >> 16) & 0xff;
int g = (argb >>  8) & 0xff;
int b = (argb      ) & 0xff;
return Color.rgb(r, g, b, a / 255.0);
}
```
```which means that:
a) my formula from the above is wrong
b) or there's the bug because it should be
return Color.rgb(r, g, b, (255 - a) / 255.0);

May I also suggest to add get a
- Color.argb(int r,int g,int b,int alpha)
maybe it is just me but I'm so much more used to alpha than opacity that
I always have to look it up when i need it.

Tom
```