DevTrain Startseite SharePoint Camp ? In 5 Tagen zum SharePoint Profi!  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: VB.NET | Thema: AW: AW: Thumbnails | Von: Thomas Hauser ( 15.08.2007 18:41)

Hallo,

folgende Tipps:
1. Option Explicit/Strict auf On stellen, dann können eine Vielzahl von Fehlern besser herausgefunden werden. Variablen haben immer einen Typ.
2. Die Methode GetThumbnailImage benötigt einen die Übergabe einer Instanz des Delegaten Image.GetThumbnailImageAbort, da dieser bestimmt, ob nach einer bestimmten Zeit die Generierung des Thumbnails abgebrochen werden soll. Wenn man das nicht will, in der Methode einfach False zurückgeben.
3. Mach das Ganze als eine Klasse, die durch eine Methode eine typisierte Liste zurückgibt, dann kann man das einfach als ObjectDataSource verwenden und spart sich viel manuelle Binden von Daten.

Hier der Code der Klassen für die ObjectDataSource:

Option Strict On
Option Explicit On

Imports System.IO
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Collections.Generic

Public Class ImagesDataSource
Public imgFolder As String = "images"

Public Function GetImages() As List(Of ImageSource)
Dim images As New List(Of ImageSource)
GetImages(images, New DirectoryInfo(HttpContext.Current.Server.MapPath(imgFolder)), imgFolder)
Return images
End Function

Public Sub GetImages(ByVal images As List(Of ImageSource), ByVal dir As DirectoryInfo, ByVal BaseUrl As String)

For Each file As FileInfo In dir.GetFiles("*.jpg")
If Not file.Name.StartsWith("Thumb_") Then
images.Add(New ImageSource(BaseUrl, file))
End If
Next

For Each subDir As DirectoryInfo In dir.GetDirectories()
Dim newBaseUrl As String = String.Format("{0}/{1}", _
BaseUrl, subDir.Name)
GetImages(images, subDir, newBaseUrl)
Next

End Sub
End Class

Public Class ImageSource

Private _File As FileInfo
Private _ImageFolder As String

Public ReadOnly Property ImageUrl() As String
Get
Return String.Format("{0}/{1}", Me._ImageFolder, Me._File.Name)
End Get
End Property

Public ReadOnly Property ThumbUrl() As String
Get
Dim thumbnail As New FileInfo(Path.Combine( _
_File.Directory.FullName, _
String.Format("Thumb_{0}", Me._File.Name)))

If Not thumbnail.Exists Then
Dim bmp As New Bitmap(Me._File.FullName)
Dim thumb As Image = bmp.GetThumbnailImage(50, 50, New Image.GetThumbnailImageAbort(AddressOf OnThumbnailAbort), IntPtr.Zero)
thumb.Save(thumbnail.FullName)
End If

Return String.Format("{0}/{1}", Me._ImageFolder, thumbnail.Name)
End Get
End Property

Public ReadOnly Property ImageName() As String
Get
Return Path.GetFileNameWithoutExtension(_File.Name)
End Get
End Property

Public Sub New(ByVal imageFolder As String, ByVal file As FileInfo)
Me._ImageFolder = imageFolder
Me._File = file
End Sub

Public Sub New(ByVal imageFolder As String, ByVal filename As String)
Me.New(imageFolder, New FileInfo(filename))
End Sub

Private Function OnThumbnailAbort() As Boolean
Return False
End Function
End Class


Hier der Code für meine Beispiel Web Form:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!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>Unbenannte Seite</title>
<style type="text/css">
div.thumb {
float: left;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetImages" TypeName="ImagesDataSource"></asp:ObjectDataSource>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1">
<ItemTemplate>
<div class="thumb">
<a href='<%# Eval("ImageUrl") %>' title='Bild <%# Eval("ImageName") %> in voller Größe'>
<img src='<%# Eval("ThumbUrl") %>' alt='<%# Eval("ImageName") %>' />
</a>
</div>
</ItemTemplate>
</asp:Repeater>
<asp:Image ID="Image1" runat="server"/>

</div>

</form>
</body>
</html>


Thomas Hauser (Trainer und Consultant, Blog: http://thomashauser.spaces.live.com, Forum: http://www.sharepointbook.de - Die Forum-Webseite zum Buch!)


Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Advanced Developers Conference vom 14.-15. Februar 2011

© Copyright 2003 ppedv AG