在Imageresizer中执行调整大小之前了解生成的图像大小

时间:2014-09-09 10:21:28

标签: c# asp.net imageresizer

imageresizer实际执行重新调整大小之前,我需要知道图像的目标大小。而且我不想打开图像文件。

我有原始图像尺寸和图像处理器参数。

我想用这种方式写一个img标签:

<img src="/files/rb45_45667.jpg?height=150&quality=90" width="XXX" height="YYY">

我尝试了ImageState

var imagestate = new ImageState(new ResizeSettings("height=150;quality=90"), new Size(1000,500), true);
imagestate.destSize = PolygonMath.RoundPoints(imagestate.layout.GetBoundingBox().Size);

但这不会起作用,因为我认为我应该执行所有ImageBuilder布局保护方法:

protected override RequestedAction Layout(ImageState s) {
    if (base.Layout(s) == RequestedAction.Cancel) return RequestedAction.Cancel;
    FlipExistingPoints(s); //Not implemented
    LayoutImage(s);
    PostLayoutImage(s);
    LayoutPadding(s);
    PostLayoutPadding(s);
    LayoutBorder(s);
    PostLayoutBorder(s);
    LayoutEffects(s);
    PostLayoutEffects(s);
    LayoutMargin(s);
    PostLayoutMargin(s);
    LayoutRotate(s);
    PostLayoutRotate(s);
    LayoutNormalize(s);
    PostLayoutNormalize(s);
    LayoutRound(s);
    PostLayoutRound(s);
    EndLayout(s);
    return RequestedAction.None;
}

但是如果不打开图像文件就不可能......

ImageState文档中他们说:

  

封装正在调整大小的图像的状态。可用于模拟调整大小以及实际执行调整大小。

但我不知道怎么做。

1 个答案:

答案 0 :(得分:2)

我找到了一种简单的方法。

我不知道这是否是正确的方法,但它有效:

ImageBuilder.Current.GetFinalSize(ImageSize, new ResizeSettings(parameters));