在上传图片时如何给图片加备注信息
在上传图片时,想给图片加备注信息,不知杂加.请大家帮帮忙忙,下面是我代码的大意...
//新建一个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