GDAL (with Python bindings) offers some very good drivers for this. Although it is a geospatial data package, it works great with BMP and PNG, for example. This example shows how to load PNG line by line:
import gdal
ds = gdal.Open('D:\\my_large_image.png')
for row in range(ds.RasterYSize):
row_data = ds.ReadAsArray(0,row,ds.RasterXSize,1)
ds = None
Numpy, . .
print type(row_data)
<type 'numpy.ndarray'>
print row_data.shape
(3, 1, 763)
print row_data
[[[ 0 0 255 ..., 230 230 0]]
[[ 0 0 252 ..., 232 233 0]]
[[ 0 0 252 ..., 232 233 0]]]
, , , PIL - . , 30000 * 30000 , .