Just to reiterate what others have said. For JPEG image files the size of the image file on the hard drive has minimal relationship to the number of pixels in the image.
In order to demonstrate this I produced a new file in PSCS5 3072 pixels wide by 2048 pixels tall and filled with the default background colour, white. It could have been any other colour, just as long as it was perfectly uniform. The reason that I picked those exact pixel dimensions is that for an image that uses 8 bits of data for each colour channel it requires EXACTLY 18 Megabytes of memory to hold the image.
So I then saved the image as an uncompressed TIFF file, this file according to Windows Explorer occupies 18456 Kb. the odd differences is from the extra data that the file uses to hold things like the EXIF data and colour space information that is needed, but doesn't actually make up the image. I then saved the image with four different levels of JPEG compression: 0, 6, 9 and 12, from lowest to highest quality. I picked these levels as the complicated JPEG compression algorithm is not linear, so the biggest differences in file size/quality setting come between levels 6 and 12. so for this plain image with ZERO detail the JPEG file sizes are Q12: 421 Kb, Q9: 200 Kb, Q6: 127 Kb and Q0: 86 Kb. This is simplest option for the JPEG algorithm as there is no detail, so the difference between Q0 and Q12 is not observable when you open the actual image.
Now to give the image lots of detail I then went and added noise to the image. I used the Add Noise filter, with a setting of 100% and a Gaussian distribution, this was colour noise. This makes just about every pixel different from the 8 others adjacent to it. This is the worst possible case for JPEG compression to deal with. So I saved the same set of five files. The TIFF file came out at 18462 Kb this time, the extra data stored is always slightly different for each file, but as the image data is stored with no compression it is always the same size. The JPEG file sizes though are very different. Q12: 21035 Kb, Almost 3 Mb bigger than the TIFF file. Q9: 13537 Kb, Q6: 5593 Kb and Q0: 4632 Kb. Because it is very hard for the JPEG, or any other system of compression to deal with such highly detailed images is why these file sizes stay so large. It did surprise me that the Q12 file was so much bigger than the uncompressed TIFF file.
Finally I added a Gradient to the noise image so that it went from plain white at the top of the image to the noise pattern at the bottom. This was to represent a half way situation, that although controlled is a bit more like a normal photographic image. The results from this test were roughly in line with my expectations. The TIFF was this time 18466 Kb, JPEG Q12: 13646 Kb, Q9: 7961 Kb, Q6: 3135 Kb and Q0: 2146 Kb.
So as you see the number of pixels: 6291456 in this case, has no relationship to the different compressed JPEG file sizes achieved, that was all down to the content of the image, and the quality setting used. The uncompressed TIFF file though, within the differences of the extra bits needed for things like EXIF stayed constant at 18 Mb, as TIFF file sizes (for images with a single layer) are wholly dependent on the number of pixels, not the content. This compressed file size business is an issue that many have a job getting a handle on.
I have added the files to my Dropbox here
.
As for your PPI issue. The more PIXELS you have the higher the PPI will be for any PARTICULAR print size. If you spread those pixels over a larger area the PPI number will go down. You will not see any difference between 99 and 100 PPI on any type of print, and canvas is a naturally low quality medium, compared to say a glossy print, hence the much lower requirements.
Alan