ti spiego come faccio io, per ottenere le immagini di sotto; vedi se ti può servire.
tipo_2
![]()
tipo_3
tipo_3, immagine fusa su un'altra
per prima cosa mi scarico le due dll all'indirizzo:
http://web.tiscali.it/archivio_esempi/zip/gdi.zip
e le copio nella directory "bin" del sito web
dopo di che ho la pagina a.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></title> </head> <body> [img]a.aspx?p_img=http://static.panoramio.com/photos/original/216697.jpg&p_width=400&p_opzione=3[/img] </body> </html>
L'elemento <img, ha come sorgente, una pagina aspx, a.aspx.
Manda tre parametri:
p_img -> nome immagine, che può essere o un percorso fisico (c:\immagini\img.jpg), o un percorso logico (../img.png), o un indirizzo remoto (http://www/xxx/img.tif)
p_width -> è la dimensione max dell'immagine che voglio ottenere
p_opzione -> valori 1, 2, 3, l'ho messo per fare vedere come funziona
pagina a.aspx
codice:<%@ Page Language="VB" %> <%@ Import Namespace="System.Drawing" %> <%@ Import Namespace="j=gdi.img" %> <script runat="server"> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) '--------------------------------------------------------------------------- 'si debbono ricevere i seguenti parametri get ' p_img : percorso dell'immagine, fisico, logico, remoto ' p_width : dimensione max immagine ' p_opzione : 1=ridimensiono, 2 adatto, 3 fondo '--------------------------------------------------------------------------- Dim p_img As String = Request.QueryString("p_img") Dim p_width As String = Request.QueryString("p_width") Dim p_opzione As String = Request.QueryString("p_opzione") 'messaggio in caso di errore Dim result As String = "" Dim bmp As Bitmap = Nothing 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 If String.IsNullOrEmpty(p_opzione) Then p_opzione = "1" 'se il messaggio è valorizzato visualizzo il messaggio di errore If result.Length > 0 Then Throw New Exception(result) 'leggo l'immagine bmp = j.ImgLoad(p_img) Select Case p_opzione Case "1" 'ridimensiono senza adattarla al contenitore j.ImgResize(bmp, CInt(p_width)) Case "2" 'adatto l'immagine ad un contenitore nero di date dimensioni j.ImgFit(bmp, 400, 400, Color.Black) Case "3" 'fondo l'immagine nel contenitore (che può essere un'altra immagine) centrandola 'ridimensiono l'immagine j.ImgResize(bmp, CInt(p_width)) 'creo una immagine di sottofondo oppure apro una immagine che faccia da sottofondo Dim sfondo As Bitmap = j.ImgCreateBitmap(450, 450, Color.Black) 'fondo l'immagine nello sfondo j.ImgMerge(sfondo, bmp) 'ricopio l'immagine finale, in bmp, che è quella che voglio bmp.Dispose() bmp = sfondo End Select 'salvo l'immagine nel flusso di uscita, formato jpg, compressione predefinita j.ImgSaveToResponseOutputStream(bmp) Catch ex As Exception Try Using bmp1 As Bitmap = j.ImgFromText(ex.Message, Color.White, Brushes.Black, New Font("Arial", 12, FontStyle.Regular, GraphicsUnit.Point)) j.ImgSaveToResponseOutputStream(bmp1) End Using Catch End Try Finally If bmp IsNot Nothing Then bmp.Dispose() End Try End Sub </script>



Rispondi quotando