前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >win10 uwp 九幽图床

win10 uwp 九幽图床

作者头像
林德熙
发布2019-03-13 11:30:26
4530
发布2019-03-13 11:30:26
举报
文章被收录于专栏:林德熙的博客林德熙的博客

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

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

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

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

  • Guid 上传的Guid,为了识别任务
  • File 要上传的图片
  • Name 上传图片的名字,没有用
  • OnUploaded 上传完成EventHandler 成功true
  • Url 上传成功返回图片
  • Scale 缩放比例,如果没有设置,默认-1,上传图片不缩放
  • Width 默认-1,图片宽度,有设置上传为设置宽度
  • Height 默认-1,图片高度
  • public abstract void UploadImage() 上传图片,不同的类可以有不同上传

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

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

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

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

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

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

public class JyUploadImage : UploadImageTask

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

  • sendFileScale 上传图片可以缩放。我们判断Scale》0,如果是,我们就用这函数上传。
  • sendFileCustom 上传图片设置图片宽度和高度,我们判断(uploadImageTask.Width > 0) && (uploadImageTask.Height > 0)
  • sendFileOriginal上传原图
  • sendFileDefault 当图片的宽或高大于某个值时,将高或宽等比缩放到这个值 九幽上传开始需要appKey,这个可以在http://www.windows.sc创建应用然后得到。

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

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

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

图床,九幽叫云存储。

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

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

代码语言:javascript
复制
        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);
            }
        }

respose_Status是上传的状态

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档