0

对于像我这样为 ImageResizer 糟糕的文档而苦苦挣扎的人,就添加水印文本而言,以下代码有效:

var c = Config.Current;
var wp = new WatermarkPlugin();  --> be sure to include
wp.Install(c);                   --> be sure to include   
wp = c.Plugins.Get< WatermarkPlugin >(); -- be sure to include (ignore spaces in <>*)

var t = new TextLayer { Text = "Hello ", Fill = true };
var i = new ImageLayer(c);
const string dest = @"c:\tmp\Image16a.png";
var source = Server.MapPath("~/image.png");    
wp.NamedWatermarks["img"] = new Layer[] { i }; 
wp.NamedWatermarks["text"] = new Layer[] { t };
c.CurrentImageBuilder.Build(source, dest, new ResizeSettings("watermark=text;name=John Doe"));

但是,如何允许用户选择放置文本水印的位置?同样,我在文档中找不到任何关于此的信息?

4

1 回答 1

1

这些是变量的属性,t可以设置为像素或百分比......您还可以应用许多其他设置t

var t = new TextLayer { Text = "Hello #{name}", Fill = true};
t.Top = new DistanceUnit(0, DistanceUnit.Units.Pixels);
t.Left = new DistanceUnit(50, DistanceUnit.Units.Percentage);

更新:例如,这是我如何跟踪/保存使用 jCrop 进行裁剪的值。您可以看到,我用来进行裁剪的工具允许我showCoords在发生任何更改时触发一个 javascript 函数 (),这就是我记录用户想要裁剪的当前尺寸的地方。

$(document).ready(function() {
    $('#<%= _cropImage.ClientID %>').Jcrop({
        aspectRatio: 3 / 4,
        onChange: showCoords,
        onSelect: showCoords,
        onRelease: showCoords
    });
});

function showCoords(c)
{
    $("#<%= _cropInfo.ClientID %>").val(c.x + "," + c.y + "," + c.x2 + "," + c.y2);
}

所以当页面被回发时,我使用 的值_cropInfo来知道我应该在哪里裁剪。无论您使用什么来让用户在图像周围移动文本,都应该有类似的东西。

于 2013-09-18T19:28:59.487 回答