我有一个图像,我将图像调整为缩略图大小 如果我使用图像大小[700(宽度)* 600(高度)]原始大小,它工作正常 假设我有10张大小的图像
但如果我使用大小为[1100 * 1200]原始尺寸的图像 它将图像调整为缩略图,但与其他图像的大小不匹配
在listview控件中显示时 所有尺寸均为[700 * 600]的图像均以单一尺寸显示
尺寸为[1100 * 1200]的图像以一种尺寸显示[略小于其他图像]
所以当我在显示图像时 listview控件所以这看起来 所有10张图片均以一种尺寸显示 但是一个图像以较小的形式显示 大小
,有时候所有图片都可以正常加载
但有些图像只显示少量图像10张图像2张图像未显示
System.Drawing.Image objImage = System.Drawing.Bitmap.FromFile(System.Web.HttpContext.Current.Server.MapPath(@"Images\" + sImageFileName));
if (sImageFileName != null)
{
if (iThumbSize == 1)
{
dHeight = objImage.Height;
dWidth = objImage.Width;
dNewHeight = 100;
dNewWidth = 100;
objImage = objImage.GetThumbnailImage((int)dNewWidth, (int)dNewHeight, new System.Drawing.Image.GetThumbnailImageAbort(callback), new IntPtr());
}
这是我正在使用的代码 我将尺寸高度和宽度设置为100
任何帮助都会很棒 谢谢
答案 0 :(得分:1)
我没有看到您的代码有什么问题,但是,我建议使用Graphics对象来绘制图像而不是使用Image对象。
这是一个例子:
Bitmap newImage = new Bitmap(newWidth, newHeight); using (Graphics gr = Graphics.FromImage(newImage)) {
gr.SmoothingMode = SmoothingMode.AntiAlias;
gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
gr.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight)); }
答案 1 :(得分:0)
ListView控件(以及ImageList)设计用于处理统一大小的图像。这可能很奇怪,但情况就是这样。所以我让ListView按照自己的意愿工作。我从普通缩略图的所有图像中创建了SquareThumbnail:
private void Thumbnail_Square()
{
Size size = new Size(Settings.Thumbnail.Size, Settings.Thumbnail.Size);
this._squareThumbnail = new Bitmap(size.Width, size.Height, this._thumbnail.PixelFormat);
Graphics g = Graphics.FromImage(this._squareThumbnail);
g.FillRectangle(Brushes.Purple, 0, 0, size.Width, size.Height);
size = this._thumbnail.Size;
Point location = new Point(
(Settings.Thumbnail.Size - size.Width) / 2,
(Settings.Thumbnail.Size - size.Height) / 2);
g.DrawImage(this._thumbnail,
new Rectangle(location.X, location.Y, size.Width, size.Height),
new Rectangle(0, 0, this._thumbnail.Width, this._thumbnail.Height), GraphicsUnit.Pixel);
g.Dispose();
}
我在表单中使用ImageList.TransparentColor = Color.Purple
使其看起来很好。