Hi kaijang14,
Yes, the display can do that. But how to do it with GxEPD is not obvious. An example is still missing.
The drawBitmap method you use reads the static data from code space, on AVR, ESP8266 and ESP32.
That's the reason your program crashes.
You need to use a drawBitmap method from Adafruit_GFX to write your buffer to the buffer of the display class, and then call update().
display.drawBitmap(0, 0, image, GxGDEW075Z09_WIDTH, GxGDEW075Z09_height, GxEPD_BLACK);
display.update();
(I didn't check, you may need to look it up in Adafruit_GFX.h)
This may work, or not, as single pixels are drawn in the display class buffer, which takes time. On ESP32 it could cause watchdog time exception.
You can do it in pieces, use a buffer of multiple lines size to make target x,y calculation easy. And call yield() or delay(1) after each drawBitmap.
Comes time, come more examples for GxEPD and GxEPD2, hopefully.
Jean-Marc
GxEPD2_32 has methods to draw bitmaps from buffer directly to controller memory.