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