qui c'è un altro esempio.

Leggo l'immagine da disco: nota che è sempre la stessa procedura.

La ridimensiono a 600px

La bordo con un bordo di 10px nero

Ci scrivo qualcosa.

Scrivo RISERVATO tipo filigrana al centro, ruotato di 45°: nota il merge di due immagini


Esempio di salvataggio su disco

Esempio di salvataggio su stream in formato png

codice:
private void Sub1()
{

	const int bordo = 10; //spessore del bordo
	const int dimMax = 600; //dimensione max dell'immaine


	//---------------------------------------------------------------
	//LEGGO IMMAGINE DA REMOTO O DA DISCO, PERCORSO VIRTUALE O FISICO
	//---------------------------------------------------------------
	Bitmap bmp = j.ImgLoad(@"/ProveNicon/h.jpg");


	//-----------------------------------------------------------------------------
	//dimensione max = 600px, interpolazione bicubica, non ingrandisce per adattare
	//-----------------------------------------------------------------------------
	j.ImgResize(ref bmp, dimMax - bordo - bordo);

	//--------------------
	//CI SCRIVO QUALCOSA
	//--------------------
	string testo = "Gairo";
	Font fn = new Font("Arial", 10, FontStyle.Regular, GraphicsUnit.Point);
	SizeF sf = j.ImgGetSizeFromText(bmp, testo, fn);
	j.ImgWriteText(bmp, testo, Brushes.Coral, fn, 10, bmp.Height - (int)sf.Height);


	//-----------------------------------------------
	//metto un bordo nero di 10 px
	//-----------------------------------------------
	j.ImgBorder(ref bmp, bordo, Color.Black);


	//--------------------------------------------------------------------------------------
	//metto la scritta "RISERVATO" al centro dell'immagine, ruotata di 45°, semitrasparente
	//--------------------------------------------------------------------------------------
	Bitmap bmp1 = j.ImgFromText("RISERVATO", Color.Transparent, new SolidBrush(Color.FromArgb(255, 170, 170, 170)), new Font("Courier New", 48, FontStyle.Bold, GraphicsUnit.Point));
	j.ImgRotate(ref bmp1, 45, Color.Transparent);
	j.ImgMerge(bmp, bmp1, (int)((bmp.Width - bmp1.Width) / 2.0), (int)((bmp.Height - bmp1.Height) / 2.0), false, 1.0);
	bmp1.Dispose();



	//---------------------------------------------------------------
	//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 in formato png
	//-------------------------------------------
	j.ImgSaveToResponseOutputStream(bmp, gdi.img.FormatoOutput.png);//viene fatto il dispose



}