zoukankan      html  css  js  c++  java
  • win10 uwp 九幽图床

    本文主要是图片加水印自动上传,代码已经上传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

    
            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

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

    <script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split(' ').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>
  • 相关阅读:
    99%的人没使用过它俩,Docker最佳实践+2
    kubernetes 中 kubeconfig 的用法
    jenkins批量修改配置文件
    记一次K8s排错实战
    记一次失败记录: MindSpore1.3.0 GPU 源码安装 —— Ubuntu18.04系统 (最终安装结果为失败)
    【转载】 使用Python的ctypes查看内存
    (摘抄) 源码分析multiprocessing的Value Array共享内存原理
    (续) python 中 ctypes 的使用尝试
    python 中 ctypes 的使用尝试
    深度强化学习算法(深度强化学习框架)为考虑可以快速适用多种深度学习框架建议采用弱耦合的软件设计方法——快速适用于多种深度学习计算框架的深度强化学习框架设计方案
  • 原文地址:https://www.cnblogs.com/lindexi/p/6949701.html
Copyright © 2011-2022 走看看