[英]How to Increase or decrease Watermark Image size according to the size of Main or output Image in MVC C#
這里我將兩張圖片合並為一張圖片,一張是水印圖片,第二張是要合並水印的主圖片或輸出圖片。
現在我想根據我上傳的主圖像增加和減少水印圖像的大小
public ActionResult WaterMarkImage(HttpPostedFileBase fileToUpload)
{
using (Image image = Image.FromStream(fileToUpload.InputStream, true, false))
{
string name = Path.GetFileNameWithoutExtension(fileToUpload.FileName);
var ext = Path.GetExtension(fileToUpload.FileName);
string myfile = name + ext;
var saveImagePath = Path.Combine(Server.MapPath("~/ImgWatermark"), myfile);
Image watermarkImage = Image.FromFile(Server.MapPath("/Img/LogoImage2.png"));
Watermarker objWatermarker = new Watermarker(image);
// Set the properties for the logo
objWatermarker.Position = WatermarkPosition.Absolute;
objWatermarker.PositionX = (int)(image.Width / 2 - watermarkImage.Width / 2);
objWatermarker.PositionY = (int)(image.Height / 2 - watermarkImage.Height / 2);
objWatermarker.ScaleRatio = 1;
objWatermarker.Margin = new Padding(0);
objWatermarker.Opacity = 0.5f;
objWatermarker.TransparentColor = Color.White;
// Drawing the logo image on Main image
objWatermarker.DrawImage(watermarkImage);
objWatermarker.Image.Save(saveImagePath);
return RedirectToAction("Index", new { imgName = myfile });
}
}
我通過將新的“WaterMarkNewHeight”和“WaterMarkNewWidth”傳遞給“resizeImage”類解決了這個問題。
public ActionResult WaterMarkImage(HttpPostedFileBase fileToUpload)
{
using (Image image = Image.FromStream(fileToUpload.InputStream, true, false))
{
string name = Path.GetFileNameWithoutExtension(fileToUpload.FileName);
var ext = Path.GetExtension(fileToUpload.FileName);
string myfile = name + ext;
//System.Drawing.Image bitmap = image;
var saveImagePath = Path.Combine(Server.MapPath("~/ImgWatermark"), myfile);
System.Drawing.Image watermarkImage = System.Drawing.Image.FromFile(Server.MapPath("/Img/LogoImage2.png"));
Watermarker objWatermarker = new Watermarker(image);
// Set the properties for the logo
objWatermarker.Position = WatermarkPosition.Center;
objWatermarker.PositionX = (int)(image.Width - watermarkImage.Width) / 2;
objWatermarker.PositionY = (int)(image.Height - watermarkImage.Height) / 2;
int WaterMarkNewWidth = image.Width / 2;
int WaterMarkNewHeight = image.Height / 4;
//watermarkImage.Size.Width = WaterMarkNewWidth;
objWatermarker.Margin = new Padding(0);
objWatermarker.Opacity = 0.4f;
objWatermarker.TransparentColor = Color.White;
Image watermarkImage1 = resizeImage(WaterMarkNewWidth, WaterMarkNewHeight, watermarkImage);
// Draw the logo
objWatermarker.DrawImage(watermarkImage1);
//Draw the Text
//objWatermarker.DrawText("WaterMarkDemo");
objWatermarker.Image.Save(saveImagePath);
return RedirectToAction("Index", new { imgName = myfile });
}
}
public Image resizeImage(int newWidth, int newHeight, Image stPhotoPath)
{
Image imgPhoto = stPhotoPath;
int sourceWidth = imgPhoto.Width;
int sourceHeight = imgPhoto.Height;
//Consider vertical pics
if (sourceWidth < sourceHeight)
{
int buff = newWidth;
newWidth = newHeight;
newHeight = buff;
}
int sourceX = 0, sourceY = 0, destX = 0, destY = 0;
float nPercent = 0, nPercentW = 0, nPercentH = 0;
nPercentW = ((float)newWidth / (float)sourceWidth);
nPercentH = ((float)newHeight / (float)sourceHeight);
if (nPercentH < nPercentW)
{
nPercent = nPercentH;
destX = System.Convert.ToInt16((newWidth -
(sourceWidth * nPercent)) / 2);
}
else
{
nPercent = nPercentW;
destY = System.Convert.ToInt16((newHeight -
(sourceHeight * nPercent)) / 2);
}
int destWidth = (int)(sourceWidth * nPercent);
int destHeight = (int)(sourceHeight * nPercent);
Bitmap bmPhoto = new Bitmap(newWidth, newHeight,
PixelFormat.Format24bppRgb);
bmPhoto.SetResolution(imgPhoto.HorizontalResolution,
imgPhoto.VerticalResolution);
Graphics grPhoto = Graphics.FromImage(bmPhoto);
grPhoto.Clear(Color.White);
grPhoto.InterpolationMode =
System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
grPhoto.DrawImage(imgPhoto,
new Rectangle(destX, destY, destWidth, destHeight),
new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight),
GraphicsUnit.Pixel);
grPhoto.Dispose();
imgPhoto.Dispose();
return bmPhoto;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.