Para reducir el tamaño de una imagen puedes utilizar el api 'StretchBlt'.
Imagina un formulario con dos PictureBox: Picture1 con la imagen origen y Picture2 en donde dibujaremos la copia reducida. Ahora copiaríamos por ejemplo a una imagen de 60x60 (en pixels ojo)
'A nivel de módulo.
Public Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
'Por ejemplo al cargar el form
Private Sub Form_Load
Dim lngRc As Long
lngRc = StretchBlt(Picture2.hdc, 0, 0, 60, 60, Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, &HCC0020)
End Sub
A ver si con esto te vas arreglando... de todas formas no considero completa mi respuesta, ya que lo que hace esta api es copiar (SRCCOPY = &HCC0020) el mapa de bits a un DC según el tamaño y coordenadas que le especifiques. Ahora la cuestión es guardar el mapa de bits. Supongo que abrá que crear un DC compatible o un mapa de bits, o algo así y aplicarle 'Strechblt', ya que si intentas utilizar 'SavePicture' con Picture2, te llevarás una desagradable sorpresa.
En fin...espero que esto te sirva de ayuda. Suerte.