#count=10000 makes an image of 10000MB make sure your image is at least the same as your existing
dd if=/dev/zero of=yourimage.img bs=1M count=10000
# losetup -fv newimage.raw
# fdisk -cu /dev/loop0
# kpartx -a /dev/loop0
# dd if= of=/dev/mapper/loop0p1
# e2fsck -f /dev/mapper/loop0p1
# resize2fs /dev/mapper/loop0p1
# a lot of guides tell you to edit /etc/fst........
The best way I could figure out is to use another guest of some sort to do this, while assigning the disk that needs to be resized to the same guest.
So say we have /dev/xvda as the guests drive and we've booted it up.
We also have /dev/xvdb (this is going to be the image/disk to be resized).
In this case it's based on an ext3/4 image.
Run e2fsck on it to ensure there are no filesystem errors.
e2fsck /dev/xvdb........