Вы должны помнить, что любое изображение, которое вы загружаете в память, независимо от того, является ли оно GIF или JPEG или что-то на диске, будет преобразовано в 32-битное растровое изображение, что означает четыре байта на пиксель.
Это означает, что создаваемое вами изображение будет:
4 bytes * 800 pixels high * 720,000 pixels wide = 2,304,000,000 bytes
Вы, по сути, теряете память, пытаясь создать такое большое изображение.
Что бы вы ни пытались выполнить, ответ - это разбиение и кэширование вашего изображения .