本文主要是图片加水印自动上传,代码已经上传github。

本文主要是广告我的软件。

有时候应用需要打开后缀名为x的文件,那么如何从文件打开应用?

图片加水印,我的方法,简单,一个好的方法是毒逆天大神的图片加水印方法或http://daily.zhihu.com/story/8812028

图床可以加速大家写博客上传图片的时间,通过简化我们的操作来得到加速。

<!–more–>
<!– csdn –>

我们现在用我的方法,就是加一个TextBlock,然后获得屏幕,很简单,然后我们把水印图保存。

在写博客的时候,我们发现,我们需要上传一张图片,需要先打开图片,然后选择本地图片,然后上传。

首先,需要打开 Package.appxmanifest

我们可能有很多地方需要上传,我现在使用是九幽,之前有smms的图床,我们做一个通用任务。

但是我经常使用截图图片,截图是直接在剪贴板,如果截图放在本地,我们需要找到本地图片,这对我来说,本地很多图片,有点难找。

韦德国际 1

  • Guid 上传的Guid,为了识别任务

  • File 要上传的图片

  • Name 上传图片的名字,没有用

  • OnUploaded 上传完成EventHandler 成功true

  • Url 上传成功返回图片

  • Scale 缩放比例,如果没有设置,默认-1,上传图片不缩放

  • Width 默认-1,图片宽度,有设置上传为设置宽度

  • Height 默认-1,图片高度

  • public abstract void UploadImage() 上传图片,不同的类可以有不同上传

因为有些垃圾网站,会不经同意使用我们的博客,所以我需要对我的图片加水印,每次需要用美图加上水印,然后上传,感觉麻烦。

添加一个功能,需要添加最少有名称,文件类型。

我们类需要传StorageFile,这个必须,因为我们上传必须有文件。

因为我们程序员就是让操作简单,我就做了一个软件,这个软件是 uwp
图床

上面的图就是我添加jpg
的方法,我的应用可以打开jpg,我也有一个应用是需要的。

我们做类是因为我们可能有很多个图床,九幽一个,smms一个,还有我们现在不知道的。我们都可以通过填写类来做到。

韦德国际 2

这个就是 UWP图床:https://www.microsoft.com/store/apps/9nblggh562r2

然后每个类一个抽象的UploadImage,根据每个图床不同,上传我们的图片,上传后一般都是使用OnUploaded
,true就是上传成功。

软件可以直接拖入图片,可以选择图片

添加完,打开App.xaml.cs

九幽上传很简单,首先是Nuget下载

首先我们在需要截图的地方用Q来截图,截图不需要保存,直接回车,截图就会在剪贴那里,于是在水印的那个地方

添加一个函数

韦德国际 3

韦德国际 4

        protected override void OnFileActivated(FileActivatedEventArgs args)
        {
            base.OnFileActivated(args);
        }

我们搜索Jiuyou,有很多九幽的,很好用,但是我们这里下载JyCloud

按ctrl+v粘贴进去,于是就可以看到了图片,接着点上传就会把图片上传,上传完成会自动在最下面生成![](图片)韦德国际,,这样我们就需要简单的三步。

需要对他做一点修改

然后我们写九幽上传,我们基层我们通用任务,我们需要写UploadImage

第一步是截图,或选择我们需要上传的图片,第二步是点击上传,第三步是点击复制,粘贴到我们的博客。

        protected override void OnFileActivated(FileActivatedEventArgs args)
        {
            var file = args.Files[0];
            Frame frame = Window.Current.Content as Frame;
            if (frame == null)
            {
                frame = new Frame();
                Window.Current.Content = frame;
            }
            frame.Navigate(typeof(MainPage), file);
             Window.Current.Activate();
 }

public class JyUploadImage : UploadImageTask

简单的步骤,目前是我的图床还有点少,准备加上骑牛等图床,sm.ms不是很稳定,但是感谢他提供的图床,九幽的图床在github看不了,但是其他博客还是好的。

这里的file可能是空。

九幽上传可以有多个函数。

如果大家对我这个软件感兴趣,可以到商店下载。

页面跳转就是这样,页面传入可以是 StorageFile。

  • sendFileScale
    上传图片可以缩放。我们判断Scale》0,如果是,我们就用这函数上传。

  • sendFileCustom
    上传图片设置图片宽度和高度,我们判断(uploadImageTask.Width > 0)
    && (uploadImageTask.Height > 0)

  • sendFileOriginal上传原图

  • sendFileDefault 当图片的宽或高大于某个值时,将高或宽等比缩放到这个值

    九幽上传开始需要appKey,这个可以在http://www.windows.sc创建应用然后得到。

连接:https://www.microsoft.com/store/apps/9nblggh562r2

直接显示在 MainPage ,如果需要显示在别的窗口,当然也不是对你有难度。

我们先登录http://www.windows.sc,选应用。

如果想看源代码,我发在github
https://github.com/lindexi/UWP/tree/master/uwp/control/BitStamp

最好的方法是使用MVVM
参见:http://lindexi.oschina.io/lindexi/post/win10-uwp-MVVM%E5%85%A5%E9%97%A8/

韦德国际 5

具体技术实现参见 win10 uwp 九幽图床和win 10 uwp smms图床两博文。

我没有在博客说如何传参,但是这个对大家也不难。

韦德国际 6

软件功能:

打开 MainPage.xaml 写一个Image

我们可以创建应用,我们可以用我们创建的应用,可以看到key

  • 从剪贴板获得图片

  • 自动图片加水印

  • 选择多个图床

  • 白天和黑夜主题

            <Image x:Name="Image"></Image>

韦德国际 7

还没完成的:水印位置、水印颜色

打开 xaml.cs ,把app启动的file显示

我们创建一个类来放我们的key,我们上传还需要我们的图床密钥。

  • 九幽图床app key
    让大家放在自己的九幽下

  • 关于界面

        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            var file = e.Parameter as StorageFile;
            if (file != null)
            {
                using (var stream = await file.OpenAsync(FileAccessMode.Read))
                {
                    BitmapImage img = new BitmapImage();
                    await img.SetSourceAsync(stream);
                    Image.Source = img;
                }
            }
        }

图床,九幽叫云存储。

有合作开发的小朋友,联系lindexi_gd@163.com

UWP 从文件显示图片很简单,打开放在img就好。

韦德国际 8

韦德国际 9
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0
国际许可协议
进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd
),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

于是打开一个jpg,用这个应用,可以看到,就是简单代码就可以。

韦德国际 10

<script type=”text/javascript”> $(function () { $(‘pre.prettyprint
code’).each(function () { var lines =
$(this).text().split(‘\n’).length; var $numbering =
$(‘<ul/>’).addClass(‘pre-numbering’).hide();
$(this).addClass(‘has-numbering’).parent().append($numbering); for (i =
1; i <= lines; i++) { $numbering.append($(‘<li/>’).text(i)); };
$numbering.fadeIn(1700); }); }); </script>

韦德国际 11

我们可以看到我们的key,这个是和应用没关。

一个好看的应用,需要在关联文件加上图片。

韦德国际 12

看到txt
文件,有一个图片,这个图片,如果应用可以加上一个图片,这个图片就是设置默认应用加上。

我们上传的是我们的StorageFile,上传完可以有ResponseInfo

但是个人开发者好像不能关联文件。

        private async Task UploadImage(UploadImageTask uploadImageTask)

        {

            //Appid 为静态,有_appid 应用的appid

            //_secretId 九幽的

            ResponseInfo responseInfo;

            if (uploadImageTask.Scale > 0)

            {

                responseInfo = await JyCloudTool.JyCloudTool.sendFileScale(

                    AppId._appId, AppId._secretId, uploadImageTask.File,

                    uploadImageTask.Scale);

            }

            else if ((uploadImageTask.Width > 0) && (uploadImageTask.Height > 0))

            {

                responseInfo = await JyCloudTool.JyCloudTool.sendFileCustom(

                    AppId._appId, AppId._secretId, uploadImageTask.File,

                    (uint) uploadImageTask.Width, (uint) uploadImageTask.Height);

            }

            else

            {

                responseInfo = await JyCloudTool.JyCloudTool.sendFileOriginal(

                    AppId._appId, AppId._secretId, uploadImageTask.File);

            }

            if (responseInfo.respose_Status == 0)

            {

                uploadImageTask.Url = responseInfo.ImgUrl;

                uploadImageTask.OnUploaded?.Invoke(uploadImageTask, true);

            }

            else

            {

                uploadImageTask.OnUploaded?.Invoke(uploadImageTask, false);

            }

        }

韦德国际 13
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0
国际许可协议
进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd
),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

respose_Status是上传的状态

<script type=”text/javascript”> $(function () { $(‘pre.prettyprint
code’).each(function () { var lines =
$(this).text().split(‘\n’).length; var $numbering =
$(‘<ul/>’).addClass(‘pre-numbering’).hide();
$(this).addClass(‘has-numbering’).parent().append($numbering); for (i =
1; i <= lines; i++) { $numbering.append($(‘<li/>’).text(i)); };
$numbering.fadeIn(1700); }); }); </script>

0 成功

1 参数缺失
2 服务冻结
3 sdk版本过低
4 密钥错误
5 签名错误(请检查SerectId是否正确)
-1 文件为空
-2 文件大小超出限制(8MB)
-3 接口命令错误
-4 服务器报错
-5 文件类型不支持
-6 积分不足上传失败
-7 未检测到网络连接
-8 文件格式出错,暂时只支持png,jpg格式

源代码:https://github.com/lindexi/UWP/tree/master/uwp/control/BitStamp

韦德国际 14
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0
国际许可协议
进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd
),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

<script type=”text/javascript”> $(function () { $(‘pre.prettyprint
code’).each(function () { var lines =
$(this).text().split(‘\n’).length; var $numbering =
$(‘<ul/>’).addClass(‘pre-numbering’).hide();
$(this).addClass(‘has-numbering’).parent().append($numbering); for (i =
1; i <= lines; i++) { $numbering.append($(‘<li/>’).text(i)); };
$numbering.fadeIn(1700); }); }); </script>

相关文章