MyApps Iscript常用代码

低代码平台中的宏语言 低代码平台中的拓展功能或者是高级需求如何实现?宏语言的应用必不可少。宏语言是什么?它有什么作用?它的应用场景是怎样的? 阅读详情

1、数据查询

var dql1 = "select * from tlk_aa where istmp=0 ";
var datas1 = queryBySQL(dql1);						//
if(datas1!=null && datas1.size()>0){
	for(var iter1 = datas1.iterator();iter1.hasNext();){
		var doc1 = iter1.next();
	}
}

2、选项脚本

var opts=createOptions();
opts.add("","");
var dql1 = "select * from tlk_aa where istmp=0 ";
var datas1 = queryBySQLNoPage(dql1);						//
if(datas1!=null && datas1.size()>0){
	for(var iter1 = datas1.iterator();iter1.hasNext();){
    	var doc1 = iter1.next();
            opts.add(doc1.getItemValueAsString("AA") , doc1.getId())
	}
}
opts

3、部门

//当前人默认部门Id
getWebUser().getDefaultDepartment();

//根据部门id获取部门名称
var process = createProcess("cn.myapps.core.department.ejb.DepartmentProcess");//部门业务处理类
var dept=process.doView(id);//id为部门ID,获取部门对象
var name=dept.getName();//获取部门名称

4、获取当前人

var rtn = getItemValueAsString("申请人");
if(!isNotNull(rtn)){
    rtn = getWebUser().getName();
}
rtn;

5、获取当前日期

var retvar =getItemValueAsDate("Fd_Time");
if(retvar==null) {
    retvar = getToday();
}
format(retvar,"yyyy-MM-dd");

6、抄送角色和指定人员

#include "SystemRole"
var sp1 = getNewRoleIdByName2("董事会");
var sp2 = getCurrentDocument().getAuthor().getId();	//申请人
var allspr = sp1+";"+sp2
var arr = splitText(allspr,";");
var userlist = createObject("java.util.ArrayList");
for (var i=0;i<arr.length;i++){
    if(arr[i] != null && arr[i].trim().length() > 0){
		userlist.add(getUserById(arr[i]));
    }
}
userlist;

7、创建表单

//创建有流程的表单
var curdoc = getCurrentDocument();
var LXID = getItemValueAsString("LXID");
var bdid = curdoc.getId();
var Fd_ProjName = getDocItemValueAsString(LXID,"Fd_ProjName");
var process = getDocumentProcess();
var formProcess = new Packages.cn.myapps.core.dynaform.form.ejb.FormProcessBean();
var flowid="11e9-f3cf-60c2ce60-b04c-6f92c4c166e6";
var form = formProcess.doViewByFormName("FMPM_DesiTaskCardBySign",getApplication());
var xmjl = curdoc.getItemValueAsString("Fd_RWXDR");

var user = getUserById(xmjl);
var tuser = new Packages.cn.myapps.core.user.action.WebUser(user);
var doc = process.doNew(form,tuser,new Packages.cn.myapps.base.action.ParamsTable());
doc.setFlowid(flowid); 
var params =new Packages.cn.myapps.base.action.ParamsTable();

doc.addStringItem("pid",LXID);
doc.addStringItem("Fd_ReQueMan",xmjl);
doc.addStringItem("Fd_ProjName",Fd_ProjName);
doc.addStringItem("QRDId",bdid);
params.setParameter("_flowid",flowid);
getDocumentProcess().doStartFlowOrUpdate(doc,params,tuser);

//创建普通表单
var user = getUserById(xmjl);
var tuser = new Packages.cn.myapps.core.user.action.WebUser(user);
var processfunc = getDocumentProcess();
var formProcessfunc = new Packages.cn.myapps.core.dynaform.form.ejb.FormProcessBean();
var arr = splitText(names, ",");
for (var i=0;i<arr.length;i++){
	if(!arr[i].equals("")){
		var form2 = formProcessfunc.doViewByFormName("Fm_ScoringEdit",getApplication());
		var doc2 = processfunc.doNew(form2,tuser,new Packages.cn.myapps.base.action.ParamsTable());
		doc2.addStringItem("GLID",pid);
		doc2.addStringItem("XMID",xmid);
		doc2.addDateItem("Fd_Stime",getToday());
		doc2.addDateItem("Fd_PlanEtime",etime);
		doc2.addStringItem("Fd_FormName",formnames);
		doc2.addStringItem("Fd_flowNames",flownames);
		doc2.addStringItem("Fd_Name",arr[i]);
		doc2.setParent(pid);
		processfunc.doCreate(doc2);
	}
}

8、表单链接

//弹出新表单连接:
getParamsTable().getContextPath()+"/portal/dynaform/document/new.action?_formid=11e8-bd41-118a72d5-82e3-b9c966406ea7&_isJump=1"

//弹出旧表单链接:
var url = getContextPath()+"/portal/dynaform/document/view.action?";
url += "_docid="+getCurrentDocument().getId()+"&_formid="+getCurrentDocument().getFormid();
url += "&application="+getApplication();

//弹出模板表单链接:
url += getContextPath()+"/portal/dynaform/document/view.action?";
url += "_docid="+getCurrentDocument().getId()+"&_formid="+getCurrentDocument().getFormid();
url += "&application="+getApplication()+"&_templateForm="+mudeID+"&isRelate=false";

9、Java函数的使用

var util = new Packages.cn.myapps.core.dynaform.custom.action.HuahanDataHelper;
util.updateProjectSpaceName("11e9-f3a4-98eebed7-b237-9b24b2212da4");

10、系统函数

//弹出对话框是否执行,和js的confirm一样
createConfirm("是否提交?")

11、JavaScript

//打开层方法
function OpenDiaDialog(url){
	var opener = window.top;//从哪个页面打开弹出框,例如:window本页面/window.parent父页面/top顶级页面...
	opener.JHKJ.dialog.show({
		refreshOpener: false,//是否刷新弹出框的打开页面
		refreshTrigger:false,//是否刷新触发弹出框的页面
		trigger: window,//传入触发弹出框的本页面,默认值无值时为打开弹出框的页面
		maximized: false,//是否允许弹出框最大化,默认不填则允许最大化
		width: '1500',//弹出框宽度
		height: '800',//弹出框高度,不能为百分比
		url: url,//弹出框的地址
		args: {},//传入弹出框的参数,这里的形式自己定义,可为数组/对象/字符串...
		title: '',//弹出框的标题
		close: function(rtVal) {//弹出框的回调函数,返回值
			dy_refresh("")
		}
	});
}
//普通打开
function openForms(url,backurl,target){
	if(backurl==""){
		backurl = window.location.href;
	}if(target==""){
		target = "_self";
	}
	if(url.indexOf("&")!=-1){
		window.open(url+"&_backURL="+encodeURIComponent(backurl),target)
	}else{
		window.open(url+"?_backURL="+encodeURIComponent(backurl),target)
	}
}

12、截取字符串

AA.substr(0,0)

13、HashMap的使用

var map = createObject("java.util.HashMap");
map.put("apple", "新鲜的苹果");      //向集合中添加对象
map.put("computer", "配置优良的计算机");
map.put("book", "堆积成山的图书");
var key = "book"; 
map.containsKey(key);//map是否包含了某个key
for(var iter2 = map.entrySet().iterator();iter2.hasNext();){
	var maps = iter2.next();
	var keyI = maps.getKey();	//key[员工编号]
}

map.size();	//数量

14、json的使用

//json例子
var content = '[{"类型":"项目负责人","姓名":"张三", "比例":"50"},{"类型":"项目负责人","姓名":"李四", "比例":"20"}]'
var json1 = createObject("net.sf.json.JSONArray");	//net.sf.json.JSONObject = = = = net.sf.json.JSONArray
var jsonArray = json1.fromObject(content);
for(var i = 0 ; i < jsonArray.size() ; i++){
	var jsonObject = jsonArray.getJSONObject(i);
	//println("啊啊啊啊啊啊啊啊啊啊啊啊:"+jsonObject.get("姓名"))
}

15、视图选择框缺陷处理

var rtn = getItemValueAsString("Fd_Mark");
rtn = replaceString(rtn,"\r","");	//视图选择框要去掉换行符,否则无法选择
rtn = replaceString(rtn,"\n","");	//视图选择框要去掉换行符,否则无法选择
rtn

16、数据库操作

//设置密码为a
update t_user set loginpwd = '0ceb614c418d06e3b9b1ee4c2fc43685'

//多个审批环节的时候删除某个
SELECT * FROM t_flow_intervention WHERE docid="11e9-5ab1-b2a9947f-b41b-fd2e1f293e2e"
#流程状态
SELECT * FROM t_flowstatert WHERE docid="11e8-0700-ed8c9dce-bad4-558174c9ae7c"
#流程节点信息表
SELECT * FROM t_nodert WHERE docid="11e9-5ab1-b2a9947f-b41b-fd2e1f293e2e"
#表单信息表
SELECT id,statelabel FROM tlk_xxx WHERE id="11e9-5ab1-b2a9947f-b41b-fd2e1f293e2e"
#文档信息表
SELECT id,statelabel FROM t_document WHERE id="11e9-5ab1-b2a9947f-b41b-fd2e1f293e2e"

//数据库操作:设置流程管理【挂起】
UPDATE t_nodert SET ISSUSPEND = 1 WHERE  docid='11e9-5a76-45242c17-b41b-fd2e1f293e2e'

//删除多余的数据
var sql = " DELETE FROM tlk_Fm_AttendaceResult WHERE ";
sql += " id NOT IN ( ";
sql += " SELECT dt.maxID FROM( SELECT MAX(id) AS maxID FROM tlk_Fm_AttendaceResult GROUP BY item_recdate , item_Fd_UserName) dt ";
sql += " ) ";
deleteByDSName("huahangl",sql)

17、流程

//流程设计的表结构
t_flowstatert 是存储当前文档流程状态的表 通过docid 与t_document 表关联
t_t_nodert 存储的是文档流程状态下的所处的节点信息 通过 flowstatert_id 与t_flowstatert关联
t_actorrt 储存的是文档流程状态所处的某个节点的处理人信息 通过 nodert_id与t_t_nodert 关联

18、底层

HttpSession session = request.getSession();
//获取application
String appid = (String) session.getAttribute(Web.SESSION_ATTRIBUTE_APPLICATIONID);
//获取当前登录人
WebUser webUser = (WebUser) session.getAttribute(Web.SESSION_ATTRIBUTE_FRONT_USER);

19、流程BUG用iscript修复

//iscript修复【暂无审批人】,然后在流程管理调整审批环节即可。
var OneSequence2 = createObject("cn.myapps.util.sequence.Sequence");
var thisId = OneSequence2.getSequence();
var flowName = "设计院/中心";
var noderId = "1515059436718";
var flowId = "11e9-f0a9-061e780a-a3b8-c7065e657909";
var docId = "11ec-7e4b-f5d3fb96-b469-e326b91ec60d"
var FLOWSTATERT_ID = "11ec-7e4b-f6217f10-b469-e326b91ec60d";	//找到对应的t_flowstatert的id
var domainId = "11e6-b837-4a81a076-8be2-bb4bf4ae2c4b";
var applicationId = getApplication();
var parentNoderId = "1515057330427";
var DEADLINE = format(getToday() , "yyyy-MM-dd HH:mm:ss");

var sql22 = " insert into t_nodert (ID,NAME,NODEID,FLOWID,DOCID,FLOWSTATERT_ID,SORTID,NOTIFIABLE,DOMAINID,APPLICATIONID,STATELABEL,FLOWOPTION,SPLITTOKEN,PASSCONDITION,PARENTNODERTID,DEADLINE,ORDERLY,APPROVAL_POSITION,STATE,LASTPROCESSTIME,REMINDER_TIMES,ISSUSPEND,RETRACEMENT) values ('"+thisId+"','"+flowName+"','"+noderId+"','"+flowId+"','"+docId+"','"+FLOWSTATERT_ID+"',null,'','"+domainId+"','"+applicationId+"','"+flowName+"','80','','0','"+parentNoderId+"','"+DEADLINE+"',null,null,null,'0000-00-00 00:00:00',null,0,null)";
insertByDSName("apcegl",sql22);

20、数据库表单信息

表名

描述

T_APPLICATION

应用信息表

T_ACTORRT

流程角色信息表

T_ACTIVITY

按钮信息表

T_ACTORHIS

流程处理人的历史信息表

T_APPVALIDATE

阿里软件的入口验证信息表

T_BILLDEFI

定制流程信息表

T_COMMONINFO

公共数据信息表

T_COMPONENT

组件信息表

T_CROSSREPORT

交叉信息表

T_CALENDAR

日历信息表

T_COUNTER

计数信息表

T_COLUMNMAPPING

列配置信息表

T_DEPARTMENT

部门信息表

T_DYNAFORM_FORM

动态保存表信息表

T_DOCUMENT

文档对象信息表

T_DATAPREPARE

预备日期信息表

T_DATASOURCE

数据源信息表

T_DOMAIN

域信息表

T_DOMAINLEVEL

域等级信息表

T_FLOWSTATERT

流程状态信息表

T_HELPER

帮助信息表

T_HOMEPAGE

主页信息表

T_IMAGEREPOSITORY

图片库信息表

T_MODULE

模块信息表

T_MAPPINGCONFIG

Excel的导入配置表

T_MULTILANGUAGE

多语言信息表

T_NODERT

流程节点信息表

T_PANDING

待办信息表

T_PAGE

页信息表

T_PERMISSION

角色和菜单的权限信息表

T_QUERY_PARAMETER

报表查询范围信息表

T_QUERY

报表查询信息表

T_RELATIONHIS

流程审批历史信息表

T_PERSONALMESSAGE

站内邮件信息表

T_ROLE

角色信息表

T_RESOURCE

菜单信息表

T_REMINDER

提醒信息表

T_REMOTESERVERT

运程配置表

T_REPOSITORY

报表信息表

T_REPORTCONFIG

报表配置信息表

T_SUPERUSER

超级管理员信息表

T_SHORTMESSAGE_RECEIVED

收到短信信息表

T_SHORTMESSAGE_SUBMIT

发送短信信息表

T_SQLSENTENCE

Sql语句保存表

T_STYLEREPOSITORY

样式库的信息表

T_STATELABEL

流程状态信息表

T_SPECIALDAY

特殊日期信息表

T_STANDARDDAY

标准日期信息表

T_TASK

定时任务信息表

T_TASK_DAYSOFWEEK

定时任务运行天数信息表

T_USER

用户信息表

T_VALIDATEREPPSOTPRY

验证库数据信息表

T_VIEW

视图信息表

T_APPLICATION_SUPERUSER_SET

对多关联表(t_application && t_superuser)

T_REPORT_MAPPING_SET

对多关联表(t_reportconfig && t_mappingconfig)

T_DOMAIN_APPLICATION

对多关联表(t_application && t_domain)

T_DOMAIN_SUPERUSER_SET

对多关联表(t_domain && t_superuser)

T_USER_DEPARTMENT

对多关联表(t_Department && t_user)

T_USER_ROLE_SET

对多关联表(t_user && t_role)

T_PENDING_ACTOR_SET

对多关联表(t_pending && t_actorrt)

低代码平台如何满足复杂业务需求,二次开发能力不容忽视 数字化办公已经成为主流,如何打造贴合企业自身需求业务管理系统?二次开发必不可少。本文介绍了二次开发的概念,分析了二次开发的业务难点,并指出了低代码平台在实现复杂业务系统方面的实践。 阅读详情

相关推荐

故障处理:Oracle一体机磁盘故障时磁盘组重平衡失败的故障处理

摘要: Oracle Exadata一体机出现磁盘故障案例,存储节点故障灯未亮但磁盘已产生大量坏块,导致重平衡失败。文章强调了一体机硬件巡检需检查6个关键维度:节点messages日志、存储cell告警日志、CellCLI日志、ASM告警日志、ILOM日志及服务器信号灯。故障分析显示硬盘物理故障导致磁盘组冗余受损,自动修复流程受阻。文中详细记录了通过CellCLI工具排查损坏磁盘的过程,并提供了完整的故障处理流程和命令输出。文章同步发布于微信公众号"IT民工的龙马人生"和博客网站(www

提供数据库技术支持(系统优化,故障处理,安装升级,数据恢复等) 1231

MyApps 4.4 IScript 脚本示例

/** 调用用户添加接口 添加用户 **/ (function () { var URLConnector = new Packages.cn.myapps.util.http.HttpRequestUtil(); var applicationId = getApplication(); var domainid = getDomainid() var outputStr = “{\n” + “\n” + " “name”: “ekko”,\n" + “\n” + " “loginno”: “

Andy2048的博客 1883

手把手教你用Matlab解析Zygo .dat文件:从二进制数据到面形图(附完整流程)

本文详细介绍了如何使用Matlab解析Zygo干涉仪生成的.dat文件,从二进制数据读取到面形图可视化的完整流程。通过实例代码演示了文件结构解析、数据矩阵读取、高阶Zernike拟合等关键技术,帮助工程师和研究人员高效处理光学检测数据,提升分析精度和工作效率。

weixin_30731305的博客 451

iScript常用校验脚本

iscript常用校验脚本(是否为空,是否数字) 一、 1、校验输入不为空 //校验输入是否为空 function checkEmpty(fieldName,fileRemark){ //控件名称,控件描述 var doc = getCurrentDocument(); var value = doc.getItemValueAsString(fieldName); if(value==null||value.trim().length()<=0){ return file.

心有谦谦结 778

OpenCV实战:如何用Debevec算法搞定相机响应函数(附完整代码)

本文详细介绍了如何使用OpenCV实现Debevec算法计算相机响应函数(CRF),并应用于HDR图像合成。通过完整的代码示例和工程实践问题解决方案,帮助开发者掌握从原理到实现的关键步骤,提升高动态范围成像和计算机视觉任务的处理能力。

weixin_29061041的博客 232

CTF---Web---文件包含---01

文章目录前言一、题目描述二、解题步骤1.查看源代码2.文件包含(/etc/passwd)3.解码总结 前言 题目分类: CTF—Web—文件包含 一、题目描述 题目:提示寻找passwd文件 二、解题步骤 1.查看源代码 提示所有图片存储路径是download.php?name=img, 此时name参数的存在就提示此题可能为“文件包含”。 2.文件包含(/etc/passwd) 两种查看方式: 2.1、访问view-source:http://192.168.87.180/download.php

qq_22160557的博客 1391

工作流宏语言iScript

      哎,最近好忙,今天好不容易空下来,在论坛东逛西逛的从不写任何贴,自己感觉也挺不好意思的。趁今天有点写东西的冲动,我也来学大家写点东西。别的不会写工作流方面的由于工作关系还算认识一点点,正好我前段时间发现一款有点意思的工作流软件,给大家分享下。工作流软件很多,我今天跟大家分享大家不知道听过没,就是天翎公司的myApps,为什么写这个。因为我了解到它跟其他的工作流软件多了一个挺实用的功

lionlionlion的专栏 621

01 - 什么是SVM

摘要:SVM(共享虚拟内存)技术使CPU和GPU能共享同一虚拟地址空间,简化异构计算编程。传统模型需手动管理CPU/GPU内存和拷贝数据,而SVM允许直接传递指针,自动处理页面迁移和一致性维护。其核心包括统一地址空间、按需迁移、页面故障处理和一致性管理,显著降低编程复杂度并提升性能。通过HMM框架、MMU通知和GPU页面异常等机制实现高效内存共享,支持复杂数据结构,为异构计算带来便利。

图形/计算GPU的驱动与虚拟化技术分享园地 3135

MyApps 5.1 IScript 脚本示例

不定时更新,专注于MyApps Iscript脚本分享

Fika的博客 1951

昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子

【代码】昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子。

william_myq的博客 509

GeoXCP:可解释人工智能中空间解释的不确定性量化

GeoXCP: uncertainty quantification of spatial explanations in explainable AI提出基于保形预测(conformal prediction)的不确定性量化框架——地理空间解释保形预测(GeoXCP),将空间依赖纳入建模过程,生成具有校准不确定性估计的空间自适应解释。通过大量模拟实验和真实世界数据集验证,GeoXCP在不同地理空间场景中能提供可靠解释并有效量化不确定性,推动可解释地理空间机器学习的发展,帮助决策者评估模型驱动洞察的可信度。

May the Force be with you 243

myApps给流程审批人赋值的多种实现方式

一、场景描述 myApps提供了两种给流程审批人赋值的方式,【角色】和【iscript脚本】,而在真实的开发中,为了让系统更简洁,更便于维护,也会设计出更多的解决方案。 二、实现方案 1、角色 这是一种最常用的一种方式,新建角色,并为角色添加用户,直接获取该角色下的用户作为流程环节的审批人。 但是,在我看来,这种方式有个不好的点就是,当流程多并且审批人非常不统一,就会造成需要配置非常多的角色,会造成用户的体验很差。...

心有谦谦结 338

第54节:vue3+cesiumjs

对之前的vue2+cesiumjs 进行了升级

qq_29384639的博客 62

myApps-iscript如果获取当前流程

1、 #include "SystemFunction" var rtn = "" var statelable = getNewStateLabel(getCurrentDocument())

心有谦谦结 252

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

天翎低代码脚本引擎介绍

编者:天翎低代码脚本引擎iScript是myApps系统是由天翎公司开发的工作流平台提供的,一种简单、以对象为基础的宏语言。myApps采用了流行的Java Script语法。通过脚本引擎实现复杂的业务逻辑。

TeemlinkMarket的博客 303

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

MyApps修改按钮样式

一原来的按钮 iscript值脚本代码: #include "SystemFunction" var curdoc = getCurrentDocument() var rtn = "" if(getNewStateLabel(curdoc).equals("结束")){ rtn = "<a href=\"javaScript:viewDoc('"+curdoc.getId()+"', '11eb-3503-36e36bb3-a5b6-f58b71da', 'false','11eb-3.

心有谦谦结 192

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

myapps iscript脚本iscript使用记录,主子表一对多插入数据,删除数据、值转换

myapps obpm iscript脚本iscript使用记录,主子表一对多插入数据,删除数据、值转换 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 //关于您的需求,需要在对应操作的执行后脚本中,通过脚本, //用SQL去控制子表数据的新增或者删除。如果是主子表单, //字表的parent字段对应的是主表的ID字段,您可以通过这两个字段做控制。 (functio

hins 2259

myapps快速开发平台常用知识点

开发常见问题及解答 1       表单 1.1表单的类型 说明: 表单类型分为普通,查询表单,普通(映射)表单。 (1)普通,常规的表单配置 (2)查询表单,主要为视图列表配置查询头,要与视图配置结合使用 (3)映射表单,可以调用应用软件在同一个数据库中不属于平台生成的数据表,通过字段的映射,对该表进行数据查询,修改,添加,删除操作 1.2控件属性 1.2.1刷新 说明:

hins 7702

日常脚本小技巧

日常IScript脚本小技巧 ( PS:此脚本大多数为JavaScript为主开发的iScript,主要是逻辑代码,在MyApps平台可以直接运用,随缘更新hhhh!脚本使用语言类型为JavaScript,sql语句,H5,Java语言) 更新日期:2021.4.27 1.1获取 ...

Brew的博客 217

MyApps实现下拉框省份-默认某个省份首位

一、省份 1、省份下拉框,并默认首位是海南 2、实现 var opts = createOptions(); opts.add("",""); opts.add("海南","23"); try{ var sql = "select areaid,areaname from area where parentId=4744 and areaid != '23'"; var datas = queryByDSName("apcegl",sql) if(datas!=null){ for(.

心有谦谦结 316

使用iscript脚本实现通过身份证号码自动生成出生日期和年龄

1、 2、 var passwords =getItemValueAsString("Fd_Validityperiod"); var rtn = ""; if(passwords.length()==18){ rtn=passwords.substring(6,14); rtn=rtn.substring(0,4)+"-"+rtn.substring(4,6)+"-"+rtn.substring(6,8); }else if(passwords.length()==15){ ..

心有谦谦结 415

Upscayl 免费开源 AI 图像放大:4 步把低清图片放大到 4 倍

Upscayl 是一款免费开源的 AI 图像放大工具,支持 Linux、macOS 和 Windows,用本地 AI 模型把低分辨率图片放大到 2 倍或 4 倍。适合想把老照片、插画、壁纸变清晰的用户,全程不上传云端,处理完直接得到更高分辨率的 JPG、PNG 文件。 [![Upscayl AI 图像放大界面与效果](https://raw.gitcode.com/GitHub_Trending

gitblog_00918的博客 734

Mermaid-live-editor终极指南:如何快速创建专业流程图和图表

Mermaid-live-editor是一款功能强大的在线流程图和图表编辑工具,它能帮助用户快速创建专业的流程图、时序图、甘特图等多种图表。无需复杂的安装和配置,通过简单的文本描述就能生成精美的可视化图表,是开发者、设计师和项目管理者的得力助手。 ## 为什么选择Mermaid-live-editor? Mermaid-live-editor采用简洁的markdown-like脚本语言,让用户

gitblog_00819的博客 728

Touch Bar Simulator:让任何Mac都能体验Touch Bar的终极指南

Touch Bar Simulator是一款强大的工具,它能让任何Mac用户都能体验到Touch Bar的便捷功能。无论你的Mac是否配备物理Touch Bar,这款模拟器都能为你带来相同的操作体验,让你轻松玩转各种手势和控制选项。 ## 什么是Touch Bar Simulator? Touch Bar Simulator是一个专为Mac用户设计的应用程序,它能够在没有物理Touch Bar

gitblog_01145的博客 657
下一篇: git常用命令
老雷先生
博客等级 码龄12年 2粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值