请问怎么把两张图片合并为一张?

Iveny 2006-04-21 11:31:31
就是图片一为外框,里面透明,图片二有个图案。请教怎样把图片二放在图片一的上面,然后保存为一张新的图片。请问C#怎样实现?
...全文
10547 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
shushu870816 2007-04-11
  • 打赏
  • 举报
回复
就是图片一为外框,里面透明,图片二有个图案。请教怎样把图片二放在图片一的上面,然后保存为一张新的图片。请问C#怎样实现?
wxlcc520 2007-04-11
  • 打赏
  • 举报
回复
mark too
jrl5365 2007-03-28
  • 打赏
  • 举报
回复
GDI+可以实现,应该和水印有类似之处
yishow 2007-03-28
  • 打赏
  • 举报
回复
interesting, mark
  • 打赏
  • 举报
回复
牛!创意无限!
loverdotnet 2007-01-31
  • 打赏
  • 举报
回复
mark
ojekleen9 2007-01-19
  • 打赏
  • 举报
回复
mark
stareatsky 2007-01-19
  • 打赏
  • 举报
回复
有用,mark
郭大侠_ 2006-06-08
  • 打赏
  • 举报
回复
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D
郭大侠_ 2006-06-08
  • 打赏
  • 举报
回复
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
郭大侠_ 2006-06-08
  • 打赏
  • 举报
回复
Public Shared Function MergedImage(ByVal innerImgPath As String, ByVal outerImgPath As String, ByVal mergImgPath As String) As Boolean
Try
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
-渔民- 2006-05-18
  • 打赏
  • 举报
回复
mark
jsnjzyx 2006-05-17
  • 打赏
  • 举报
回复
Mark
buyaowen 2006-05-17
  • 打赏
  • 举报
回复
mark
jacky_20001 2006-05-11
  • 打赏
  • 举报
回复
这个问题比较好玩 也比较郁闷
如果是多个gif图 合成一个gif
里面的动画效果是多个效果的组合
怎么实现??
lzwfs 2006-05-11
  • 打赏
  • 举报
回复
Mark
jhtchina 2006-05-09
  • 打赏
  • 举报
回复
Mark
icefire988 2006-05-09
  • 打赏
  • 举报
回复
其实和给上传的图片做水印。楼住搜索一下有很多这样的文章。
woanon 2006-05-09
  • 打赏
  • 举报
回复
不错的话题,做个记号,up
edwardy2418 2006-05-09
  • 打赏
  • 举报
回复
我写了一个组件,可以合并n张图片 自己直接引用就可以了

组件的下载和使用说明
可以看我的blog

http://spaces.msn.com/edwardy2418/
加载更多回复(14)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧