首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

图片加水印的有关问题

2012-02-01 
图片加水印的问题图片的大小和像素都不一样,加水印后的后果非常不理想,有的水印字体很小,而有的非常大,根

图片加水印的问题
图片的大小和像素都不一样,加水印后的后果非常不理想,有的水印字体很小,而有的非常大,根本就显示不完,请问怎么解决,以下是我加水印的代码:
private   void   AddWater(string   Source,   string   Dest,   string   addText)
{
    System.Drawing.Image   image   =   System.Drawing.Image.FromFile(Source);

    System.Drawing.Graphics   g   =   System.Drawing.Graphics.FromImage(image);
    g.DrawImage(image,   0,   0,   image.Width,   image.Height);
    System.Drawing.Font   f   =   new   System.Drawing.Font( "Verdana ",60);
    System.Drawing.Brush   b   =   new   System.Drawing.SolidBrush(System.Drawing.Color.Red);
                       
    g.DrawString(addText,   f,   b,   0,   0);
    g.Dispose();

    image.Save(Dest);
    image.Dispose();
}


[解决办法]
http://www.codeproject.com/csharp/watermark.asp
这有个处理的图片质量还行;。
[解决办法]
正在看楼上提供的网站
[解决办法]
学习飘过帮楼主顶顶顺便学习下
[解决办法]
mark
[解决办法]
maybe you can construct a new algorithm to implement the functionality that the text 's size is changed according to the size of the image and other referring info.

Good luck.
[解决办法]
http://www.51aspx.com/CV/ImageUpload/
==============
看看这个
[解决办法]
mark
[解决办法]
帮你顶
[解决办法]
http://www.wave12.com/web/home.asp

缩略图水印组件wsImage3.5

[解决办法]
学习学习
[解决办法]
学习!
[解决办法]
以后看看
[解决办法]
System.Drawing.Font f = new System.Drawing.Font( "Verdana ",60); //不要定死水印字体的大小啊,可以根据图片的大小来判断要打上多少大小的字体,如果图片很大,可以大一点,而如果很小的话,可以适当的小一点

int temp = image.Width > image.Height ? image.Height : image.Width;
if (temp > 500)
font = new Font( "Verdana ", 100);
else if (temp < 100)
font = new Font( "Verdana ", 50);
else
font = new Font( "Verdana ", 75);
[解决办法]
路过一下
[解决办法]

我也觉得也只有JGood() 说的这样咯
[解决办法]
JGood() up

JF
[解决办法]
System.Drawing.Font f = new System.Drawing.Font( "Verdana ",60);
60太绝对了,应根据情况定义值
------解决方案--------------------


再顶
[解决办法]
你用的是C#还是VB.net?

Sub ImgWater(ByVal ImgName As String, ByVal Copyright As String)
If System.IO.File.Exists(ImgName) Then
'载入图片,取得长宽
Dim myImg As System.Drawing.Image = System.Drawing.Image.FromFile(ImgName)
Dim ImgWidth As Integer = myImg.Width
Dim ImgHeight As Integer = myImg.Height

Dim grImg As Graphics
Dim bmImg As Bitmap

'判断其分辨率,如果不等于96像素,那么新建一个24位的位图,并设置分辨率为96像素
'把原图(新图)载入Graphic对象
If myImg.HorizontalResolution = 96.0F And myImg.VerticalResolution = 96.0F Then
bmImg = New Bitmap(myImg)
grImg = Graphics.FromImage(bmImg)
Else
bmImg = New Bitmap(ImgWidth, ImgHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb)
bmImg.SetResolution(96, 96)
grImg = Graphics.FromImage(bmImg)
End If

'清除整个绘图面并以透明背景色填充
'设置呈现模式为消除锯齿
'在位图(x=0,y=0)的位置,把原图100%的大小绘制在位图上
grImg.Clear(Color.Transparent)
grImg.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias
grImg.DrawImage(myImg, New Rectangle(0, 0, ImgWidth, ImgHeight), 0, 0, ImgWidth, ImgHeight, GraphicsUnit.Pixel)

'新建字体,并设置字体、字号、字型
'设置在位图上画画的位置
Dim crFont As Font = New Font( "Arial ", 10, FontStyle.Bold)
Dim y As Single = 10.0F
Dim x As Single = 20.0F

'先在位图上的原位置向右、向下一个像素的位置写黑色字作为阴影
'再在位图上的原位置写灰色字,以两种字体叠加产生立体效果
Dim TransBrush_yinying As SolidBrush = New SolidBrush(Color.FromArgb(153, 0, 0, 0))
grImg.DrawString(Copyright, crFont, TransBrush_yinying, x + 1, y + 1)
Dim TransBrush_zhuse As SolidBrush = New SolidBrush(Color.FromArgb(153, 255, 255, 255))
grImg.DrawString(Copyright, crFont, TransBrush_zhuse, x, y)

'压缩图片,ImgZl为图片压缩质量0-100
Dim ImgZl As Integer = 88
Dim ICI As System.Drawing.Imaging.ImageCodecInfo = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders(1)
Dim EP As System.Drawing.Imaging.EncoderParameters = New System.Drawing.Imaging.EncoderParameters(1)
EP.Param(0) = New System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ImgZl)

'释放占用的资源
myImg.Dispose()

'保存新图片,释放释放占用的资源
Dim NewImg As System.Drawing.Image = bmImg
NewImg.Save(ImgName, ICI, EP)
grImg.Dispose()
NewImg.Dispose()

End If

End Sub

'压缩图片为指定的MIIE格式GetEncoderInfo( "image/jpeg ")
'GetEncoderInfo( "image/jpeg ")=System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders(1)
Function GetEncoderInfo(ByVal mimeType As String) As System.Drawing.Imaging.ImageCodecInfo
Dim i As Integer
Dim encoders As System.Drawing.Imaging.ImageCodecInfo()
encoders = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
For i = 0 To encoders.Length - 1
If encoders(i).MimeType = mimeType Then
Return encoders(i)
End If
Next
End Function

热点排行