我有一个aspx页面,它将从客户端pc上传图像到服务器硬盘
但现在我需要改变我的程序,这样我就可以在上传时调整图像大小.
有没有人对此有任何想法?我无法使用输入文件服务器控件找到这样的属性/方法
那里有人指导我吗?
发生的事情(仅在某些图像上会引人注目)是我会看到1像素的白色边框插入一个像素.它似乎发生在轻而不是白色的区域(例如天空).它类似于某些东西过度锐化并且在高对比度边缘旁边可以看到鬼影边框.
这是完美再现它的repro代码.我正在使用所有最高质量的设置进行缩放.
ImageCodecInfo encoder = null;
EncoderParameters encoderParams = null;
foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders())
{
if (codec.MimeType == "image/jpeg")
{
encoder = codec;
// use highest quality compression settings
encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 100L);
break;
}
}
using (Bitmap input = (Bitmap)Bitmap.FromFile(inputPath, true))
{
// shrink by multiple of 2
Rectangle rect = new Rectangle(0, 0, input.Width/32, input.Height/32);
using (Bitmap output = new Bitmap(rect.Width, rect.Height))
{
using (Graphics g = Graphics.FromImage(output))
{
// use highest …Run Code Online (Sandbox Code Playgroud) 我在.NET中的图像缩放有问题.我使用标准的Graphics类型来调整图像大小,如下例所示:
public static Image Scale(Image sourceImage, int destWidth, int destHeight)
{
Bitmap toReturn = new Bitmap(sourceImage, destWidth, destHeight);
toReturn.SetResolution(sourceImage.HorizontalResolution, sourceImage.VerticalResolution);
using (Graphics graphics = Graphics.FromImage(toReturn))
{
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.DrawImage(sourceImage, 0, 0, destWidth, destHeight);
}
return toReturn;
}
Run Code Online (Sandbox Code Playgroud)
但是我对调整大小的图像有一个很大的问题:它们有灰色和黑色边框,制作没有图像的图像非常重要.
它们为什么出现以及我能做些什么使它们消失?
样本输出:
