<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def from_bytes(cls, image_bytes, affine, crs, band_names=None):
 """Create GeoRaster from image BytesIo object. :param image_bytes: io.BytesIO object :param affine: rasters affine :param crs: rasters crs :param band_names: e.g. ['red', 'blue'] or 'red' """

        b = io.BytesIO(image_bytes)
        image = imageio.imread(b)
        roll = np.rollaxis(image, 2)
        if band_names is None:
            band_names = [0, 1, 2]
        elif isinstance(band_names, str):
            band_names = [band_names]

        return GeoRaster2(image=roll[:3, :, :], affine=affine, crs=crs, band_names=band_names)