Python image combiner reading writing
Tuple unpacking

width = photo1.size[0]  # define W and H
height = photo1.size[1]


can be

width, height = photo1.size


Use input properly

Don't print here:

print("Output file: ", end="")
output = input()


Instead,

output = input('Output file: ')


Range default start

Don't include the 0 in these calls:

for y in range(0, height):  # counts to 1079
    for x in range(0, width):# counts to 1920


Only call pack once

    data += struct.pack("B", R) + struct.pack("B", G) + struct.pack("B",B)


should become, I think,

data += struct.pack('BBB', R, G, B)