Qui se ne è parlato tanto tanto ... tanto.

Io faccio così:

1) nel sito deve esserci una directory chiamata Bin

2) lì dentro metto una dll che fa il lavoro: non deve essere registrata, ma deve stare in quella directory. La scarico da qui: http://web.tiscali.it/archivio_esempi/zip/gdi.zip

3) devo avere una pagina con estensione .aspx che fa da tramite pagina asp-dll. Un esempio minimale è questo

codice:
<%@ Page Language="VB" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Text" %>
<%@ Import Namespace="System.Drawing.Drawing2D" %>
<%@ Import Namespace="System.Drawing.Imaging" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="j=gdi.img" %>

<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        '---------------------------------------------------------------------------
        'Restituisce una immagine .jpg ridimensionata con lato max = p_width
        '
        'si debbono ricevere i seguenti parametri get
        '   p_img             : percorso dell'immagine
        '   p_width           : dimensione max immagine > 0, default = -1
        '---------------------------------------------------------------------------
        Dim p_img As String = Request.QueryString("p_img")
        Dim p_width As String = Request.QueryString("p_width")

        'messaggio in caso di errore
        Dim result As String = ""
        
        Try
            'leggo i parametri p_img e p_width
            p_img = Request.QueryString("p_img")
            p_width = Request.QueryString("p_width")
            
            
            'controllo che vengano ricevuti e che siano del tipo giusto
            If String.IsNullOrEmpty(p_img) Then result &= "p_img non valorizzato" & vbNewLine
            If String.IsNullOrEmpty(p_width) OrElse Integer.TryParse(p_width, Nothing) = False Then result &= "p_width non valorizzato o non numerico" & vbNewLine

            'se il messaggio è valorizzato visualizzo il messaggio di errore
            If result.Length > 0 Then Throw New Exception(result)
             
            'se nessun errore visualizzo l'immagine ridimensionata                        
            j.ImgResizeAndSaveToResponseOutputStream(p_img, CInt(p_width))
            
        Catch ex As Exception
            Dim bmp As Bitmap = j.ImgFromText(ex.Message, Color.White, Brushes.Black, New Font("Arial", 12, FontStyle.Regular, GraphicsUnit.Point))
            j.ImgSaveToResponseOutputStream(bmp)

        End Try



        
    End Sub
    
    
</script>


e adesso un esempio di pagina asp

codice:
<% option explicit  %>
<% Response.CharSet = "utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Pagina senza titolo</title>
    <link href="../../../stili/Styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <h3>immagini lette da locale e da remoto</h3>
    [img]img.aspx?p_img=C:\dati\ProveNikon\DSCN0010.png&p_width=400[/img]
    

    [img]img.aspx?p_img=http://static.panoramio.com/photos/original/216697.jpg&p_width=400[/img]
</body>
</html>
come vedi, il tag <img, avrà un src che punta alla pagina aspx, e le passa due parametri:

p_width --> è la dimensione max dell'immagine che voglio ottenere

p_img --> è l'immagine che voglio ottenere, percorso fisico assoluto, oppure percorso virtuale locale, oppure percorso virtuale remoto.

ciao