No it's not a complex number but a real number per pixel for a gray scale image and 3 real numbers per pixel for a standard RGB image which is supposed to be a matrix of N by M pixels, stored in an appropriate storage class in a given technology and programming language, such as an array type in C.
Gray scale digital images are represented as 2D arrays of numbers, each representing the intensity of the image at the given pixel, traditionaly in 8 bit integers between [0,255] and also in [0,1] for floating point implementations.
Color images are treated in a number of ways. Most fundamental approach is to use the RGB convention to represent each pixel with its optical components such as Red, Green and Blue colors. These values are again mostly either 8 bits in [0,255] or floating values in [0,1].
In the old days, color images were also treated via palettes that I don't want to mention here. There are also other represantations for images such as HSV,YUV,YIQ,YPbPr,YCmCr (analog and digital) codecs, commercial and broadcasting applications, but are not much related with your question.
Note that the RGB triad could also be appended with a fourth byte, referred to as the alpha channel which can be utilized by some applications
Also newer imaging standards allow more than 8-bits per color component.