questa è solo una prova (non sono esperto di grafica, perciò controlla
)
pagina a.aspx
codice:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="a.aspx.vb" Inherits="prove_a" %>
<!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 runat="server">
<title>Pagina senza titolo</title>
</head>
<body style="background-color:Black">
<form id="form1" runat="server">
<div>
[img]a.aspx?img=0[/img]<%--immagine normale--%>
[img]a.aspx?img=1[/img]<%--immagine ritagliata 280x180--%>
[img]a.aspx?img=2[/img]<%--immagine ritagliata 280x180 inserita dentro un riquadro bianco di 300x200--%>
</div>
</form>
</body>
</html>
codice collegato
codice:
Option Strict On
Partial Class prove_a
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim img As String = RequestParams("img")
If img = "1" Then
'immagine ritagliata 280x180
Dim bmp As Bitmap = DirectCast(System.Drawing.Image.FromFile("C:\dati\Prove Nicon\prova.jpg"), Bitmap)
ImgClip(bmp, New Rectangle(50, 100, 280, 180))
System.Web.HttpContext.Current.Response.ContentType = "image/jpeg"
bmp.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
bmp.Dispose()
System.Web.HttpContext.Current.Response.End()
ElseIf img = "2" Then
'immagine ritagliata a 280x180
'inserita in un riquadro bianco di 300x200
'leggo l'immagine da disco
Dim bmp As Bitmap = DirectCast(System.Drawing.Image.FromFile("C:\dati\Prove Nicon\prova.jpg"), Bitmap)
'taglio l'immagine dal punto 50, 100, larga 280, alta 180
ImgClip(bmp, New Rectangle(50, 100, 280, 180))
'creo il riquadro bianco 300x200
Dim bmp1 As New Bitmap(300, 200, bmp.PixelFormat)
bmp1.SetResolution(bmp.HorizontalResolution, bmp.VerticalResolution)
Dim gr As Graphics = Graphics.FromImage(bmp1)
gr.Clear(Color.White)
gr.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
gr.DrawImage(bmp, New Rectangle(CInt((300 - bmp.Width) / 2), CInt((200 - bmp.Height) / 2), bmp.Width, bmp.Height), New Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel)
System.Web.HttpContext.Current.Response.ContentType = "image/jpeg"
bmp1.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
bmp.Dispose()
gr.Dispose()
bmp.Dispose()
System.Web.HttpContext.Current.Response.End()
ElseIf img = "0" Then
'immagine originale
Dim bmp As Bitmap = DirectCast(System.Drawing.Image.FromFile("C:\dati\Prove Nicon\prova.jpg"), Bitmap)
System.Web.HttpContext.Current.Response.ContentType = "image/jpeg"
bmp.Save(System.Web.HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
bmp.Dispose()
System.Web.HttpContext.Current.Response.End()
End If
End Sub
'-------------------------------------------------------------------------
'questa procedura, data una immagine bmpSource, la ritaglia secondo il
'rettangolo clip passato
'-------------------------------------------------------------------------
Public Sub ImgClip(ByRef bmpSource As Bitmap, ByVal clip As Rectangle)
Dim bmp As New Bitmap(clip.Width, clip.Height, bmpSource.PixelFormat)
bmp.SetResolution(bmpSource.HorizontalResolution, bmpSource.VerticalResolution)
Dim gr As Graphics = Graphics.FromImage(bmp)
gr.Clear(Color.White)
gr.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
gr.DrawImage(bmpSource, New Rectangle(0, 0, clip.Width, clip.Height), clip, GraphicsUnit.Pixel)
gr.Dispose()
bmpSource.Dispose()
bmpSource = bmp
End Sub
End Class