当前位置:编程学习 > C#/ASP.NET >>

在上传图片时如何给图片加备注信息

在上传图片时,想给图片加备注信息,不知杂加.请大家帮帮忙忙,下面是我代码的大意
...
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth,toheight);


//bitmap.SetResolution(72f, 72f);  

        
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);

g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;

g.FillRectangle(new System.Drawing.SolidBrush(System.Drawing.Color.White), 0, 0,towidth, toheight);
System.Drawing.Rectangle destrect = new System.Drawing.Rectangle(0, 0,towidth, toheight);
g.DrawImage(originalImage, destrect,new System.Drawing.Rectangle(x, y, ow,oh), System.Drawing.GraphicsUnit.Pixel);
//-----------


try
{            
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);//关键这里如何加图片备注信息
}
catch(System.Exception e)
{
return false;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();                        
g.Dispose();
} --------------------编程问答-------------------- /// <summary>
/// 图片水印,图片文字
/// </summary>
/// <param name="WorkingDirectory">图片目录</param>
/// <param name="Copyright">文字</param>
/// <param name="sourceImg">源图片</param>
/// <param name="logBmp">Logo图片</param>
/// <param name="FormatImg">合成后的图片名称</param>
private void drimg(string WorkingDirectory,string Copyright,string sourceImg,string logBmp,string FormatImg)
{
System.Drawing.Image imgPhoto = System.Drawing.Image.FromFile(WorkingDirectory+sourceImg);
int phWidth = imgPhoto.Width;
int phHeight =imgPhoto.Height;
Bitmap bmPhoto = new Bitmap(phWidth,phHeight,PixelFormat.Format24bppRgb);
bmPhoto.SetResolution(72,72);
Graphics grPhoto = Graphics.FromImage(bmPhoto);

System.Drawing.Image imgWatermark = new Bitmap(WorkingDirectory + logBmp);
int wmWidth = imgWatermark.Width;
int wmHeight = imgWatermark.Height;
grPhoto.SmoothingMode = SmoothingMode.AntiAlias;
grPhoto.DrawImage(
imgPhoto,                               
new Rectangle(0, 0, phWidth, phHeight), 
0,                                      
0,                                       
phWidth,                                
phHeight,                               
GraphicsUnit.Pixel);

int[] sizes = new int[]{16,14,12,10,8,6,4};
Font crFont = null; 
SizeF crSize = new    SizeF(); 
for (int i=0 ;i<7; i++)

crFont = new Font("arial", sizes[i],
FontStyle.Bold);
crSize = grPhoto.MeasureString(Copyright,
crFont);

if((ushort)crSize.Width < (ushort)phWidth)
break;
}
int yPixlesFromBottom = (int)(phHeight *.05);
float yPosFromBottom = ((phHeight - 
yPixlesFromBottom)-(crSize.Height/2));
float xCenterOfImg = (phWidth/2);

StringFormat StrFormat = new StringFormat();
StrFormat.Alignment = StringAlignment.Center;
SolidBrush semiTransBrush2 = 
new SolidBrush(Color.FromArgb(153, 0, 0,0)); 

grPhoto.DrawString(Copyright,                    
crFont,                                      
semiTransBrush2,                             
new PointF(xCenterOfImg+1,yPosFromBottom+1), 
StrFormat);

SolidBrush semiTransBrush = new SolidBrush(
Color.FromArgb(153, 255, 255, 255));

grPhoto.DrawString(Copyright,                 
crFont,                                   
semiTransBrush,                           
new PointF(xCenterOfImg,yPosFromBottom),  
StrFormat);

Bitmap bmWatermark = new Bitmap(bmPhoto); 
bmWatermark.SetResolution(
imgPhoto.HorizontalResolution, 
imgPhoto.VerticalResolution);

Graphics grWatermark =
Graphics.FromImage(bmWatermark);
ImageAttributes imageAttributes =
new ImageAttributes();
ColorMap colorMap = new ColorMap();

colorMap.OldColor=Color.FromArgb(255, 0, 255, 0);
colorMap.NewColor=Color.FromArgb(0, 0, 0, 0);
ColorMap[] remapTable = {colorMap};

imageAttributes.SetRemapTable(remapTable,
ColorAdjustType.Bitmap);
float[][] colorMatrixElements = { 
new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},
new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},
new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},
new float[] {0.0f,  0.0f,  0.0f,  0.3f, 0.0f},
new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}
};

ColorMatrix wmColorMatrix = new
ColorMatrix(colorMatrixElements);

imageAttributes.SetColorMatrix(wmColorMatrix, 
ColorMatrixFlag.Default, 
ColorAdjustType.Bitmap);
int xPosOfWm = ((phWidth - wmWidth)-10);
int yPosOfWm = 10;

grWatermark.DrawImage(imgWatermark, 
new Rectangle(xPosOfWm,yPosOfWm,wmWidth,
wmHeight),
0,                  
0,                   
wmWidth,            
wmHeight,            
GraphicsUnit.Pixel, 
imageAttributes);
imgPhoto = bmWatermark;
grPhoto.Dispose();
grWatermark.Dispose();
imgPhoto.Save(WorkingDirectory + FormatImg);
imgPhoto.Dispose();
imgWatermark.Dispose();
} --------------------编程问答-------------------- private void btnok_Click(object sender, System.EventArgs e)
{
this.drimg(@"E:\MyProject\img\","Honsl.com","c1.jpg","logo.bmp","c1111.jpg");
Response.Write("<script language='javascript'>alert('ok')</script>");
Response.End();
} --------------------编程问答-------------------- 多谢老大的帮助,我不是加水印,我是加给图片加备注.比若我上传时生成的图片是根据(商品_日期_系列号) 这样做的,但在编辑过程中往往图片很难找因为都是数字,所以我想给图片加一个备注.在选择图片时,我也能读出这个备注.我说的备注是文件--属性--摘要--里的备注.谢谢大家 --------------------编程问答-------------------- 好复杂啊! --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 顶一下
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,