none
VB与缩略图 RRS feed

  • 问题

  • 我是一个正在学VB.NET的学生,我很希望做一个图片浏览器,可是不知道怎样才能使图片以缩略图的形式显示,如何让图片进行幻灯片播放。请大家多多指教!
    2008年1月9日 11:02

答案

  • 用.net 的Image类的方法GetThumbnailImage 是最简单的制作缩略图的方法

    用法:

    Public Function GetThumbnailImage( _
       ByVal
    thumbWidth As Integer, _
       ByVal thumbHeight As Integer, _
       ByVal callback As Image.GetThumbnailImageAbort, _
       ByVal callbackData As IntPtr _
    ) As Image

    参数

    thumbWidth
    请求的缩略图的宽度(以像素为单位)。
    thumbHeight
    请求的缩略图的高度(以像素为单位)。
    callback
    一个 Image.GetThumbnailImageAbort 委托。在 GDI+ 1.0 版中不使用此委托。即便如此,也必须创建一个委托并在该参数中传递对此委托的引用。
    callbackData
    必须是 IntPtr.Zero。

    返回值

    用于表示该缩略图的 Image 对象。

    备注

    如果 Image 对象包含一个嵌入式缩略图像,则此方法会检索嵌入式缩略图,并将其缩放为所需大小。如果 Image 对象不包含嵌入式缩略图像,此方法会通过缩放主图像创建一个缩略图像。

    当所请求的缩略图大小约为 120×120 时,GetThumbnailImage 工作正常。如果从一个有嵌入式缩略图的 Image 对象中请求一个较大的缩略图像(比如 300×300),则在缩略图像的质量会有显著的降低。通过调用 DrawImage 缩放主图像(而非嵌入式缩略图),则效果可能较好。

     

    例子:

    '定义回调函数

    Public Function ThumbnailCallback() As Boolean

        return false
    End Function

    '定义处理函数
    Public Sub  Example_GetThumb(e As PaintEventArgs )
        Dim myCallback As  New Image.GetThumbnailImageAbort(ThumbnailCallback)
        Dim myBitmap As Bitmap = New Bitmap("Climber.jpg")
        Dim myThumbnail As Image = myBitmap.GetThumbnailImage(
    40, 40, myCallback, IntPtr.Zero)

        e.Graphics.DrawImage(myThumbnail, 150, 75)
    End Sub

     

    2008年1月11日 4:04

全部回复

  • 程序块

    Dim formImage As System.Drawing.Image = System.Drawing.Image.FromFile(path) '原图
    Dim gFormat = formImage .RawFormat '获取图形格式
    Dim pwidth As Integer = formImage .Width
    Dim pheight As Integer = formImage .Height
    Dim toImage As New Bitmap(formImage , NewthumbSize(pwidth, pheight))
    imgOutput.Save(strSaveImagePath, gFormat) '保存缩略图文件
    myImage.Dispose()
    imgOutput.Dispose()
    '=======================
    '设置图片大小
    '=======================
    Function ByVal currentwidth, ByVal currentheight)
    Dim tempMultiplier As Double
    If currentheight > currentwidth Then
    tempMultiplier = 100 / currentheight '设置大小
    Else
    tempMultiplier = 100 / currentwidth
    End If
    Dim NewSize As New Size(CInt(currentwidth * tempMultiplier), CInt(currentheight * tempMultiplier))
    Return NewSize
    End Function

     

     

    至于幻灯片播放,你可以遍历文件夹中的所有图片,然后以一定的时间间隔轮换显示图片就可以了`~~~
    2008年1月9日 16:16
    版主
  • 用.net 的Image类的方法GetThumbnailImage 是最简单的制作缩略图的方法

    用法:

    Public Function GetThumbnailImage( _
       ByVal
    thumbWidth As Integer, _
       ByVal thumbHeight As Integer, _
       ByVal callback As Image.GetThumbnailImageAbort, _
       ByVal callbackData As IntPtr _
    ) As Image

    参数

    thumbWidth
    请求的缩略图的宽度(以像素为单位)。
    thumbHeight
    请求的缩略图的高度(以像素为单位)。
    callback
    一个 Image.GetThumbnailImageAbort 委托。在 GDI+ 1.0 版中不使用此委托。即便如此,也必须创建一个委托并在该参数中传递对此委托的引用。
    callbackData
    必须是 IntPtr.Zero。

    返回值

    用于表示该缩略图的 Image 对象。

    备注

    如果 Image 对象包含一个嵌入式缩略图像,则此方法会检索嵌入式缩略图,并将其缩放为所需大小。如果 Image 对象不包含嵌入式缩略图像,此方法会通过缩放主图像创建一个缩略图像。

    当所请求的缩略图大小约为 120×120 时,GetThumbnailImage 工作正常。如果从一个有嵌入式缩略图的 Image 对象中请求一个较大的缩略图像(比如 300×300),则在缩略图像的质量会有显著的降低。通过调用 DrawImage 缩放主图像(而非嵌入式缩略图),则效果可能较好。

     

    例子:

    '定义回调函数

    Public Function ThumbnailCallback() As Boolean

        return false
    End Function

    '定义处理函数
    Public Sub  Example_GetThumb(e As PaintEventArgs )
        Dim myCallback As  New Image.GetThumbnailImageAbort(ThumbnailCallback)
        Dim myBitmap As Bitmap = New Bitmap("Climber.jpg")
        Dim myThumbnail As Image = myBitmap.GetThumbnailImage(
    40, 40, myCallback, IntPtr.Zero)

        e.Graphics.DrawImage(myThumbnail, 150, 75)
    End Sub

     

    2008年1月11日 4:04