allora, visto che non ho manuale nè esempi, l'unico modo che mi viene in mente è quello di dire cosa vuoi così faccio l'esempio. Perciò, in base a quello che mi hai detto ti ho fatto questo esempio molto semplificato.
Leggo una immagine da remoto, la ridimensiono, la bordo con un bordo nero di 10px, la salvo su disco, la salvo nello stream di uscita:
pagina
codice:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="a.aspx.cs" 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>
<form id="form1" runat="server">
[img]a.aspx?p_img=1[/img]
</form>
</body>
</html>
codice
codice:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Text;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using j = gdi.img;
public partial class prove_a : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string p_img = this.Request.QueryString["p_img"];
if (p_img != null && p_img == "1")
Sub1();
}
private void Sub1()
{
const int bordo = 10; //spessore del bordo
const int dimMax = 600; //dimensione max dell'immaine
//'-----------------------------------------------------------------------------------------
//'restituisce una bmp letta da file o da remoto
//'se immagineInput inizia per "http://" l'immagine si presume debba essere letta da remoto;
//'se contiene : come c:\immagine.jpg si presume un percorso fisico
//'altrimenti si presume un percorso virtuale
//'-----------------------------------------------------------------------------------------
//---------------------------------------------------------------
//LEGGO IMMAGINE DA REMOTO O DA DISCO, PERCORSO VIRTUALE O FISICO
//---------------------------------------------------------------
Bitmap bmp = j.ImgLoad(@"http://web.tiscali.it/archivio_esempi/immagini/v.jpg");
/*--------------------------------------------------------------------------------------------------------------------------------------------------------
* Serve per ridimensionare immagini
* se width e height sono > 0, l'immagine viene ridimensionata
* porre width e height = -1 o 0 per non ridimensionare l'immagine
* se specifico width e height vengono usati questi valori e l'immagine può essere deformata
* se specifico whidth e height = 0, o viceversa, vengono rispettati i rapporti w/h
* interpolazione: se InterpolationMode.Invalid, viene usato il predefinito
* ingrandisciPerAdattare: vero=ingrandisce l'immagine per adattarla alle dimensioni
* -------------------------------------------------------------------------------------------------------------------------------------------------------*/
//-----------------------------------------------------------------------------
//dimensione max = 500px, interpolazione bicubica, non ingrandisce per adattare
//-----------------------------------------------------------------------------
j.ImgResize(ref bmp, dimMax - bordo - bordo);
//--------------------
//CI SCRIVO QUALCOSA
//--------------------
j.ImgWriteText(bmp, "Gairo", Brushes.Coral, new Font("Arial", 12), 10, 280);
//-----------------------------------------------
//metto un bordo nero di 10 px
//-----------------------------------------------
j.ImgBorder(ref bmp, bordo, Color.Black);
//---------------------------------------------------------------
//salvo su file in formato jpg, compressione standare predefinita
//---------------------------------------------------------------
j.ImgSaveToFile(bmp, @"c:\tmp\gairo1.jpg");//non viene fatto il dispose
//-----------------------------
//salvo nello stream di uscita
//-----------------------------
j.ImgSaveToResponseOutputStream(bmp);//viene fatto il dispose
}
}
Qualche notizia:
la procedura di load, legge da remoto, da disco percorso fisico e da disco percorso virtuale e da upload (HttpPostedFile)
tutte le procedure hanno diverse versioni in overload, quelle con tutti i parametri hanno tutte le possibilità, le altre usano impostazioni predefinite, più usate. Per esempio, anche se ho la possibilità di salvare a bassa o olta qualità, nel formato che voglio, e con la compressione che voglio, in genere io voglio salvare ad alta qualità, in formato jpg e con compressione predefinita di 0.7
Quando ridimensiono posso impostare la larghezza e l'altezza, ma credo che a pochi interessi ridimensionare distorcendo l'immagine; perciò la versione con pochi parametri salva con la dimensione max voluta senza distorcere.
imgFit serve a questo:
imposti un quadrato o un rettangolo e l'immagine viene ridimensionata e adattata al contenitore.
ImgMerge fonde immagini, per esempio puoi aggiungere un logo all'immagine impostando pure la trasparenza.
puoi scrivere su una immagine con ImgWriteText
ImgClipRectangle, ridimensiona una immagine, adattandola ad un contenitore rettangolare o quadrato eliminando le parti eccedenti