0
이미지에 두 개의 워터 마크 텍스트를 추가하려고합니다. 이미지 크기에 관계없이 이미지의 왼쪽 하단에 하나와 오른쪽 하단에 하나씩 워터 마크 텍스트를 추가하려고합니다.크기가 같지만 dpi가 다른 이미지의 워터 마크 텍스트 글꼴 크기
public void AddWaterMark(string leftSideText, string rightSideText, string imagePath)
{
string firstText = leftSideText;
string secondText = rightSideText;
Bitmap bitmap = (Bitmap)Image.FromFile(imagePath);//load the image file
PointF firstLocation = new PointF((float)(bitmap.Width * 0.035), bitmap.Height - (float)(bitmap.Height * 0.06));
PointF secondLocation = new PointF(((float)((bitmap.Width/2) + ((bitmap.Width/2) * 0.6))), bitmap.Height - (float)(bitmap.Height * 0.055));
int opacity = 155, baseFontSize = 50;
int leftTextSize = 0, rightTextSize = 0;
leftTextSize = (bitmap.Width * baseFontSize)/1920;
rightTextSize = leftTextSize - 5;
using (Graphics graphics = Graphics.FromImage(bitmap))
{
Font arialFontLeft = new Font(FontFamily.GenericSerif, leftTextSize);
Font arialFontRight = new Font(FontFamily.GenericSerif, rightTextSize);
graphics.DrawString(firstText, arialFontLeft, new SolidBrush(Color.FromArgb(opacity, Color.White)), firstLocation);
graphics.DrawString(secondText, arialFontRight, new SolidBrush(Color.FromArgb(opacity, Color.White)), secondLocation);
}
string fileLocation = HttpContext.Current.Server.MapPath("~/Images/Albums/") + Path.GetFileNameWithoutExtension(imagePath) + "_watermarked" + Path.GetExtension(imagePath);
bitmap.Save(fileLocation);//save the image file
bitmap.Dispose();
if (File.Exists(imagePath))
{
File.Delete(imagePath);
File.Move(fileLocation, fileLocation.Replace("_watermarked", string.Empty));
}
}
내가 직면하고 문제가 제대로 물 마크 텍스트의 font size
설정 함께 : 다음 나의 방법이다. 1600 x 900
픽셀 크기의 이미지가 두 개 있고 첫 번째 이미지의 길이가 dpi
인 경우 72
이고 두 번째 이미지의 길이가 dpi
인 경우 240
입니다. 위의 방법은 72
dpi의 이미지에서는 제대로 작동하지만 240
dpi
인 이미지의 경우 워터 마크 텍스트의 font size
이 너무 커서 오버플로합니다. dpi
의 이미지와 함께 font size
을 올바르게 계산하는 방법은 같지만 크기는 같습니까?
따라서 더 큰 DPI 값의 글꼴 크기를 효과적으로 줄이시겠습니까? (DPI에 의존하지 않고 글꼴 크기를 픽셀 단위로 표시) – grek40