在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文档中他们说:
封装正在调整大小的图像的状态。可用于模拟调整大小以及实际执行调整大小。
但我不知道怎么做。
答案 0 :(得分:2)
我找到了一种简单的方法。
我不知道这是否是正确的方法,但它有效:
ImageBuilder.Current.GetFinalSize(ImageSize, new ResizeSettings(parameters));