Hola, si el hosting soporte .net, puedes usar este script que utilizo yo y me va de fábula:
   Código PHP:
    <%@ Page Language="VB" Debug="true" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<%@ Import Namespace="system.drawing" %>
<%@Import Namespace="System.Drawing.Drawing2D" %>
<%
' Initialize objects
Dim objImage, objThumbnail As System.Drawing.Image
Dim strServerPath, strFilename As String
Dim shtWidth, shtHeight, MaxHeight, Coefficient, W, H As Short
Dim Forma, MaxWidth
Dim PathNormal, PathThumb, PathGaleria
' Get image folder path on server - use "\" string if root
strServerPath = "Ruta de la carpeta temporal donde está la imagen"
PathNormal = "Ruta de la carpeta donde irá la foto"
PathThumb = "Ruta de la carpeta donde irá el thumb" & "thumb"
 
' Retrieve name of file to resize from query string
If Request.QueryString("img")<>"" Then
 Dim images as String
 images = Replace(Request.QueryString("img"), "/", "")
 If Mid(images, 1, 1)="" Then 
  images = Mid(images, 2, Len(images))
 End If
 strFilename = Request.ServerVariables("APPL_PHYSICAL_PATH") & images
Else
 If Instr(1, Request.QueryString("file"), ":")>0 Then
  strFilename = Request.QueryString("file")
 Else
  strFilename = strServerPath & Request.QueryString("file")
 End If
End If
' Retrieve file, or error.gif if not available
Try
    objImage = objImage.FromFile(strFilename)
Catch
    objImage = objImage.FromFile(strServerPath & "nombre de la imagen NO DISPONIBLE")
End Try
' Retrieve width from query string
If Request.QueryString("width") = Nothing Then
    shtWidth = objImage.Width
ElseIf Request.QueryString("width") < 1 Then
    shtWidth = 640
Else
    shtWidth = Request.QueryString("width")
 W = Request.QueryString("width")
End If
If Request.QueryString("height") = Nothing Then
    shtHeight = objImage.Height
ElseIf Request.QueryString("height") < 1 Then
    shtHeight = 480
Else
    shtHeight = Request.QueryString("height")
 H = Request.QueryString("height")
End If
MaxHeight=objImage.Height
MaxWidth=objImage.Width
If shtWidth<MaxWidth And Request.QueryString("width")<>"" Then 'Si la imagen es mayor que la redimensión
 shtHeight=Cint((MaxHeight / MaxWidth) * shtWidth)
 
ElseIf shtHeight<MaxHeight And Request.QueryString("height")<>"" Then 'Si la imagen es mayor que la redimensión
 shtWidth=Cint((MaxWidth / MaxHeight) * shtHeight)
 if request.QueryString("w")<>"" Then
  If Clng(Request.QueryString("w"))<Clng(shtWidth) Then
   shtHeight=Cint((MaxHeight / MaxWidth) * Request.QueryString("w"))
   shtWidth=Request.QueryString("w")
  End If
 end If
Else
 If shtHeight>MaxHeight And Request.QueryString("w")<>"" Then
  shtHeight=Cint((MaxHeight / MaxWidth) * Request.QueryString("w"))
  shtWidth=Request.QueryString("w")
 Else
  shtWidth=MaxWidth
  shtHeight=MaxHeight
 End If
End If
 
' Create thumbnail
objThumbnail = objImage.GetThumbnailImage(shtWidth, _
  shtHeight, Nothing, System.IntPtr.Zero)
If shtWidth > 150 Or shtHeight > 150 Then
 Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(objThumbnail)
 Dim StringSizeF as SizeF
 Dim DesiredWidth as Single, wmFont as Font, RequiredFontSize as Single, Ratio as Single
 Dim strWatermark = "."
 'If Request.QueryString("eff")="1" Then strWatermark="."
 'Seteamos la fuente.
 wmFont = New Font("Tahoma", 2, FontStyle.Bold)
 DesiredWidth = shtWidth * .5
 StringSizeF = g.MeasureString(strWatermark, wmFont)
 Ratio = StringSizeF.Width / wmFont.SizeInPoints
 RequiredFontSize = DesiredWidth / Ratio
 wmFont = New Font("Verdana", RequiredFontSize, FontStyle.Bold)
 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
 g.DrawImage(objImage, 0, 0, shtWidth, shtHeight)
 g.SmoothingMode = SmoothingMode.HighQuality 
 Dim letterBrush as SolidBrush = new SolidBrush(Color.FromArgb(50, 255, 255, 255))
 Dim shadowBrush as SolidBrush = new SolidBrush(Color.FromArgb(50, 0, 0, 0)) 
 g.DrawString(strWatermark, wmFont, shadowBrush, 75, (shtHeight * .5) - 1800)
 g.DrawString(strWatermark, wmFont, letterBrush, 77, (shtHeight * .5) - 1802)
End If
 
' Send down to client
Response.ContentType = "image/jpeg"
If Request.QueryString("tipo")="normal" Then
 objThumbnail.Save(PathNormal & Request.QueryString("nombre"), System.Drawing.Imaging.ImageFormat.Jpeg)
ElseIf Request.QueryString("tipo")="thumb" Then
 objThumbnail.Save(PathThumb & "t" & Request.QueryString("nombre"), System.Drawing.Imaging.ImageFormat.Jpeg)
Else
 objThumbnail.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
End If
' Tidy up
objImage.Dispose()
objThumbnail.Dispose()
%> 
    
  Este script te permite redimensionar al vuelo las imágenes y redimensionarlas y guardarlas en una carpeta. 
Para redimensionar al vuelo, tan solo has de enlazarlo así:  
 Código PHP:
    resize.aspx?img=/fotos/imagen.jpg&height=100&w=140 
    
  El valor "height" y "w" son para el Width y el Heigt respectivamente. 
Si lo que quieres es redimensionarla y guardarla en la carpeta:  
 Código PHP:
    resize.aspx?file=/tmp/imagen.jpg&width=Ancho&tipo=normal 
    
  Y para un thumb:  
 Código PHP:
    resize.aspx?file=/tmp/imagen.jpg&width=Ancho&tipo=thumb 
    
  Espero te sirva y te aclares. 
Un saludo!