convert images from [-1; 1] to [0; 255]
As you have found, img * 255 gives you a resulting range of  [-255:255], and (img + 1) * 255 gives you a result of [0:510]. You're on the right track.
What you need is either: int((img + 1) * 255 / 2) or round((img + 1) * 255 / 2). This shifts the input from [-1:1] to [0:2] then multiplies by 127.5 to get [0.0:255.0]. 
Using int() will actually result in [0:254]
I know that question is really simple, but I didn't find how to bypass the issue:
I'm processing images, the output pixels are float32, and values are in range [-1; 1]. The thing is, when saving using openCV, all negative data and float values are lost (I only get images with 0 or 1 values)
So I need to convert those images to [0; 255] (Int8)
I've tried

img * 255, but doing this does not help with negative values. 
(img + 1) * 255, I'm removing the negative values, but I'm creating
an overflow

Is there a (clean) way to do it ?
I'm using Python35, OpenCV2 and Numpy, but I think it's more a math problem than a library thing