webForumDet fria alternativet

thumnails... i C#

16 svar · 979 visningar · startad av Bjuris

BjurisMedlem sedan juli 2001514 inlägg
#1

Hittade en gammal klass som genererar bilder hämtade från en databas.
Har egentligen bara ett problem och det är att jag skulle vilja göra om så att jag kan siza om bilderna, men jag vet inte riktigt hur jag skall implementera detta.

Kodexempel som jag hittade och som för övrigt fungerar klockrent verkar inte använda sig av Outputstream på samma vis som jag, är det någon som kan hjälpa mig?

string SQL = "SELECT FileSize, FileData, ContentType FROM tblFile WHERE FileID = " + FileID.ToString();

OleDbCommand dbComm = new OleDbCommand(SQL, dbConn);
OleDbDataReader dbRead = dbComm.ExecuteReader();
dbRead.Read();
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = (string)dbRead["ContentType"];
HttpContext.Current.Response.OutputStream.Write((byte[])dbRead["FileData"], 0, (int)dbRead["FileSize"]);
HttpContext.Current.Response.End();
m_soderlundMedlem sedan sep. 20026 425 inlägg
#2

Genererar du nu en tumnagel för varje sidvisning eller har du tumnaglar som du skapar en gång och lagrar på servern sen?

BjurisMedlem sedan juli 2001514 inlägg
#3

För varje visning.

m_soderlundMedlem sedan sep. 20026 425 inlägg
#4

Det är jättedumt för det tar en del kraft att skapa tumnaglar. Skapa tumnagel en gång, spara på disken och sökväg i databasen, skriv sen ut sökvägen.

Ta en titt på denna artikel och implementera den i ditt script: http://blogs.msdn.com/kaevans/archive/2003/07/02/9608.aspx

BjurisMedlem sedan juli 2001514 inlägg
#5

ok.
Hur skall man skapa tummarna då?
Det är ju fredag, jag får i varje fall bara små kryssbilder...

m_soderlundMedlem sedan sep. 20026 425 inlägg
#6

Har du läst artikeln jag länkade till? Där står det mesta skrivet bra. :)

BjurisMedlem sedan juli 2001514 inlägg
#7

japp har läst och fixat koden, men fortfarande inga småbilder.
När jag klickar på det röda krysset så får jag ett nytt fönster och där visas den stora bilden.
måste vara något knas :
thumbNail.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

m_soderlundMedlem sedan sep. 20026 425 inlägg
#8

Jag tror att det har att göra med sökvägen du lagrar i databasen. Kan du visa oss all ämnesrelaterad kod? :)

BjurisMedlem sedan juli 2001514 inlägg
#9

Tänkte att jag skulle skippa databasen helt och hållet, det är egentligen ganska onödigt då det inte skall vara någon text till bilderna utan dem skall bara visas.

På så sätt så kunde jag använda hans lösning nästan helt ut.
Filerna ligger i projektrooten samt att bildena ligger där också.

Här kommer då all ämnesrelaterad kod: :e

galleri.aspx

<ItemTemplate >
	<asp:HyperLink Runat='server'  ImageUrl='<%# string.Concat("MakeThumbNail.aspx?file=",DataBinder.Eval(Container.DataItem,"Name")) %>'
	NavigateUrl='<%# DataBinder.Eval(Container.DataItem,"Name") %>' ID="Hyperlink1"></asp:HyperLink>
</ItemTemplate>

Galleri.aspx.cs

System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(Server.MapPath("."));
DataList1.DataSource = dir.GetFiles("*.jpg");
DataList1.DataBind();

MakethumbNail.aspx

<%@ Page language="c#" CodeFile="MakeThumbnail.aspx.cs" AutoEventWireup="false" Inherits="MakeThumbNail" %>

makethumbnail.aspx.cs

public partial class MakeThumbNail : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
	{
		System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);

		System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(Request.QueryString["file"]));
		
		Response.Write(Server.MapPath(Request.QueryString["file"])+"TEST");
		
		System.Drawing.Image thumbNail = image.GetThumbnailImage(100, 80, myCallback, IntPtr.Zero);
		Response.ContentType = "image/jpeg";
		thumbNail.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
		image.Dispose();
		thumbNail.Dispose();
		

	}
	public bool ThumbnailCallback()
	{
		return false;
	}

}
DinoMedlem sedan sep. 20011 914 inlägg
#10

makethumbnail.aspx.cs

public partial class MakeThumbNail : System.Web.UI.Page
{
   protected void Page_Load(object sender, EventArgs e)
   {
      Bitmap bmap = null;

      Image img = System.Drawing.Image.FromFile(Server.MapPath(Request.QueryString["file"]));
      bmap = this.Resize(img, 100, 80);

      Response.ContentType = "image/jpeg";
      bmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
      bmap.Dispose(); 
   }

   private Bitmap Resize(System.Drawing.Image image, int width)
   {
      int height = (int) (width * ((double) image.Height / (double) image.Width));
      return Resize(image, width, height);
   }

   private Bitmap Resize(System.Drawing.Image image, int width, int height)
   {
      Bitmap bitmap = new Bitmap(width, height);       
      bitmap.SetResolution(image.HorizontalResolution, image.VerticalResolution);
			
      using(Graphics graphics = Graphics.FromImage(bitmap))
      {
         graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
         graphics.DrawImage(image, 
                    new Rectangle(0, 0, width, height),
                    new Rectangle(0, 0 ,image.Width, image.Height),
                    GraphicsUnit.Pixel);
      }
      image.Dispose();
      return bitmap;
   }
}
BjurisMedlem sedan juli 2001514 inlägg
#11

får fortfarande ett rött kryss, vad gör jag för fel?

BjurisMedlem sedan juli 2001514 inlägg
#12

nu skäms jag, men *bump* *bump*

DinoMedlem sedan sep. 20011 914 inlägg
#13

Hur värdet av Server.MapPath(Request.QueryString["file"]) ut. Kan ju vara fel där.

BjurisMedlem sedan juli 2001514 inlägg
#14

Server.MapPath fungerar som den skall och visar rätt.
Om jag klickar på min thumbnail (som inte genereras) så dyker min vanliga bild upp (jag använder samma sökväg till båda)

emissionMedlem sedan dec. 19996 721 inlägg
#15

Kolla på själva bild-URL:en direkt. Felmeddelande?

BjurisMedlem sedan juli 2001514 inlägg
#16

Det är det som är det jäkliga... får inget felmess utan själva koden verkar fungera finfint.

BjurisMedlem sedan juli 2001514 inlägg
#17

Har kollat runt lite och blir lite fundersam om det är något liknanade som ett gamalt inlägg: http://www.webforum.nu/showthread.php?t=96278&highlight=thumbnail

Någon som kanske har något input om att det är något som inte är kompatibelt med bildhantering?

Använde lightbox, men har plockat bort den för att "undersöka" men den var oskyldig :)

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)