parted will not be of any help.... parted can resize a partition, not an image file.
When you say (in your first post) you tried to copy from one image file (the 20Gb one) to an other (the 10 Gb one), can you state exactly how you did this ? I see two alternative to acheive your goal. The first one is the fastest one but easy to screw-up. The second is a little longuer but almost errorprone.
--- 1 ---
Now that you have resized your file system with resize2fs, if you know exactly the block size on your image file and the number of blocks used by the remaining file system, just copy those blocks to a new image file (replace <bs>, <fsBlocks> by corresponding values).
Code:
dd if=/path/to/currentImg of=/path/to/newImg bs=<bs> count=<fsBlocks>
Once this is done, you can check your new image file
Code:
e2fsck /path/to/newImg
--- 2 ---
Copy the entire content from one fs to another
Create an empty 10Gb image file:
Code:
dd if=/dev/zero of=/path/to/newImgFile bs=1k count=10485760
Create an ext3 filesystem on the image:
Code:
mke2fs -j /path/to/newImgFile
When you get the warning about the file not being a block special file, just answer yes to proceed.
Mount the current image file and the new one
Code:
mount -o loop /path/to/currentImgFile /path/to/currentMntPoint
mount -o loop /path/to/newImgFile /path/to/newMntPoint
Copy all the content of the current filesystem to the new one preserving permissions
Code:
cd /path/to/currentMntPoint
tar cf - . | tar xfp - -C /path/to/newMntPoint
You can (as in solution 1) check your new image filesystem. DO NOT FORGET TO UNMOUNT FIRST.
Code:
umount /path/to/newMntPoint
e2fsck /path/to/newImgFile
-----
Good luck