이미지에 워터 마크를 추가하고 최상의 품질로 저장하려고하지만 JPEG 워터 마크의 저장 품질이 낮지 만 (주 이미지 품질이 좋음)C# : JPEG를 저장할 때 워터 마크 이미지의 품질이 낮습니다.
string wtrSrc = @"D:\watermark.png";
string imgSrc = @"D:\image.jpg";
string imgOutJPG = @"D:\result.jpg";
string imgOutPNG = @"D:\result.png";
// create new image
Bitmap imgOutput = new Bitmap(imgSrc);
Graphics outputGraphics = Graphics.FromImage(imgOutput);
// image quality
outputGraphics.CompositingQuality = CompositingQuality.HighQuality;
outputGraphics.InterpolationMode = InterpolationMode.HighQualityBilinear;
outputGraphics.SmoothingMode = SmoothingMode.HighQuality;
outputGraphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
// create watermark image
System.Drawing.Image wtrmark = System.Drawing.Image.FromFile(wtrSrc);
// add waternark
float wtrmarkX = 10;
float wtrmarkY = 10;
outputGraphics.DrawImage(wtrmark, wtrmarkX, wtrmarkY);
//set jpeg quality
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
// save result
imgOutput.Save(imgOutJPG, GetEncoder(ImageFormat.Jpeg), myEncoderParameters);
imgOutput.Save(imgOutPNG, ImageFormat.Png);
// clean
wtrmark.Dispose();
imgOutput.Dispose();
outputGraphics.Dispose();
......
// ImageCodecInfo
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
PNG 절약은 잘 작동하지만 JPEG를 저장해야합니다. 다음은 PNG와 JPEG http://i.stack.imgur.com/CqwgZ.jpg
의 차이가있어이 글 http://www.codeproject.com/Articles/2927/Creating-a-Watermarked-Photograph-with-GDI-for-NET을 다음과 같은 결과를 얻을.
JPEG에서 워터 마크를 만드는 방법이 좋습니까?
이 문제가 예 : http 소스 이미지에 투명도가 될 수 우리의 B 서비스에 대한 코드 아래 사용 변수 PATH의 enviornment에서 http://www.google.com/questions/6513633/c-convert-transparent-png-to-jpg-with-non-black-background-color? –
아니요, 워터 마크 단순 JPEG 이미지로 사용하려고했지만 결과는 같습니다. 다음은 예입니다. - http://i.imgur.com/SZQuEyR.jpg?1 – user1032559
InterpolationMode.InterpolationModeHighQualityBicubic를 사용해 보셨습니까? –