I don't really (read: never) deal with image processing via code. I expect for starters, something like:
new data types:
byte: unsigned 8-bit integer (0-255)
struct pixel {
byte r, g, b, a;
}
creation:
image $img;
$img.Read(fileName);
$img.New(width, height) or $img = Image(width, height) - Width/height can only be set during this stage. Construction creates blank and transparent pixels (zeroes across the rgba channels)
fields/properties:
$img.width (read only)
$img.height (read only)
$img.pixels[] (get/set array values, but protected array size). Array length is width*height
Manipulation aside from $img.pixels[]:
$img.GetPixel(x, y) - user-friendly means of getting pixels by its x and y coordinates in the image.
$img.SetPixel(x, y, pixel) - user friendly means of setting the pixel
Maybe also tie this class into textures as well, as it expands capability to create procedural and possibly (scratches head) animated textures? For example, $tex.SetTexture($img) uses an Image object for its image information rather than a file.