我是郭大侠

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D

Public Class ImgMerg
    Public Shared Function MergedImage(ByVal innerImgPath As String, ByVal outerImgPath As String, ByVal mergImgPath As String) As Boolean
        Try
            Dim fi As System.IO.FileInfo = New System.IO.FileInfo(mergImgPath)
            If fi.Directory.Exists = False Then
                fi.Directory.Create()
            End If

            Dim innerImg As Image = Image.FromFile(innerImgPath)
            Dim outerImg As Image = Image.FromFile(outerImgPath)

            Dim b As New Bitmap(outerImg.Width, outerImg.Height, PixelFormat.Format16bppRgb555)
            Dim g As Graphics = Graphics.FromImage(b)
            g.Clear(Color.White)

            Dim p1(2) As Point
            Dim p2(2) As Point
            If outerImg.Width >= innerImg.Width Then
                If outerImg.Height >= innerImg.Height Then
                    p1(0) = New Point((outerImg.Width - innerImg.Width) \ 2, (outerImg.Height - innerImg.Height) \ 2)
                    p1(1) = New Point((outerImg.Width + innerImg.Width) \ 2, (outerImg.Height - innerImg.Height) \ 2)
                    p1(2) = New Point((outerImg.Width - innerImg.Width) \ 2, (outerImg.Height + innerImg.Height) \ 2)
                Else
                    p1(0) = New Point((outerImg.Width - innerImg.Width) \ 2, 0)
                    p1(1) = New Point((outerImg.Width + innerImg.Width) \ 2, 0)
                    p1(2) = New Point((outerImg.Width - innerImg.Width) \ 2, outerImg.Height)
                End If
            Else
                If outerImg.Height >= innerImg.Height Then
                    p1(0) = New Point(0, (outerImg.Height - innerImg.Height) \ 2)
                    p1(1) = New Point(outerImg.Width, (outerImg.Height - innerImg.Height) \ 2)
                    p1(2) = New Point(0, (outerImg.Height + innerImg.Height) \ 2)
                Else
                    p1(0) = New Point(0, 0)
                    p1(1) = New Point(outerImg.Width, 0)
                    p1(2) = New Point(0, outerImg.Height)
                End If
            End If

            p2(0) = New Point(0, 0)
            p2(1) = New Point(outerImg.Width, 0)
            p2(2) = New Point(0, outerImg.Height)

            g.DrawImage(innerImg, p1)
            g.DrawImage(outerImg, p2)

            b.Save(mergImgPath)
            outerImg.Dispose()
            innerImg.Dispose()
            Return True

        Catch ex As Exception
            Return False
        End Try

        '测试代码
        'Dim innerImgPath As String = "c:\Winter.jpg"
        'Dim outerImgPath As String = "c:\17.gif"
        'Dim savePath As String = "C:\merg.jpg"

        'If ImgMerg.MergedImage(innerImgPath, outerImgPath, savePath) = True Then
        '    Dim bMerg As New System.drawing.Bitmap(savePath)
        'Else
        '    MsgBox("错误")
        'End If
    End Function

End Class

posted on 2006-06-08 17:40  郭大侠  阅读(2372)  评论(2编辑  收藏  举报

青花帽筒

青花帽筒

龙凤罐

龙凤罐

紫檀笔筒

小罐