1.二维码(QR code)基本结构及生成原理
2.一文详解 OpenCVSharp 裁剪/精简文件大小并发布到nuget(以wechatqrcode模块为例)
3.djangoå¦ä½å®ç°äºç»´ç ï¼
二维码(QR code)基本结构及生成原理
二维码(2-dimensional bar code)是码下一种用特定几何图形按一定规律在二维平面上分布黑白相间的图形,用于存储和记录数据符号信息。码下常见的码下二维条码包括Data Matrix、Maxi Code、码下Aztec、码下QR Code、码下邮件源码在哪里Vericode、码下PDF、码下Ultracode、码下Code 、码下Code K等。码下
二维条码/二维码分为堆叠式/行排式二维条码和矩阵式二维条码两大类。码下堆叠式/行排式二维条码通过堆积或行排的码下方式存储数据,如Code K、码下Code 、码下PDF、MicroPDF等。而矩阵式二维条码则以黑白像素在矩形空间内编码,蘑菇头云蹦迪源码如QR Code、Data Matrix、MaxiCode、Han Xin Code、Grid Matrix等。
QR码(Quick Response Code)是最流行的矩阵式二维条码之一。它在编码原理、校验原理、识读方式等方面继承了一维条码的特点,同时具有存储大容量信息、在小空间内打印、有效表现各种字母、对变脏和破损的适应能力强、可以从任意方向读取、支持数据合并功能等优点。
QR码的存储容量大,一个QR码最多可以处理字(仅用数字时)的dubbo源码中的锁巨大信息量。它还能在狭小的空间内打印,并支持所有类型的数据,包括数字、英文字母、日文字母、汉字、符号、二进制、控制码等。此外,QR码对数据的恢复能力强,即使部分编码变脏或破损,也能通过纠错功能恢复数据。
QR码的信息量和版本通过不同的码元结构(码元数)来控制。版本从1到,每个版本都有固定的码元结构。通过选择不同的超宏指标公式源码版本、数据量、字符类型和纠错级别,可以确定QR码的最多输入字符数。例如,当需要输入位数字时,应选择纠错级别为“M”,查看下表以确定最佳版本。
QR码的纠错功能是通过RS编码实现的,它可以自动恢复数据,纠错等级分为L、M、Q、H四个级别。用户可根据使用环境选择合适的级别,级别越高纠错能力越强,但数据量和编码尺寸也会相应增加。
QR码的kdj量能组合指标源码应用广泛,从传单、名片等印刷品,到结算系统、生活相关领域、商业领域等,都可应用QR码。它的功能贴近生活,设计精致,因此在设计推荐制度中被授予“优秀设计奖”。QR码的标准化工作由DENSO WAVE全面公开,现已在国家标准和国际标准中实现标准化。
QR码标准文件可以在ISO官方网站购买,或者从资源链接下载标准版。此外,提供了一个C++编写的二维码编码解码工具,基于zxing的编码库和libqrcode的解码库,可实现二维码与文本之间的相互转换。
一文详解 OpenCVSharp 裁剪/精简文件大小并发布到nuget(以wechatqrcode模块为例)
OpenCvSharp 是一个强大的 .NET 包装器,专门用于 OpenCV 库。然而,在准备发布应用程序时,我们可能会惊讶地发现,即使只是包含 OpenCvSharp 的 nuget 包,Release 文件夹的大小竟然高达 MB,相当于百度网盘安装程序大小的 1/6(百度网盘安装程序展开后是 MB)。深入分析发现,这主要是由于 OpenCvSharp 包括了整个庞大计算机视觉库的全部功能,而通常我们只会用到其中的很小一部分。 本文以wechatqrcode模块为例,介绍如何通过精简非必要的部分,来缩小最终分发应用程序的大小。编译环境为 Windows x。通过以下步骤,我们可以实现这一目标:Step 1:准备工作
首先,需要安装 Git、CMake GUI 和 VS (或更新版本)。接下来,找到一个合适的文件夹,并克隆 OpenCvSharp 作者的两个存储库,通过执行如下命令来操作:请注意,对于包含子模块的opencv_files 存储库,必须指定--recursive 参数以确保子模块也被克隆到本地。如果忘记添加该参数,可以使用如下命令进行补救:
Step 2:配置 CMake
使用 CMake GUI,定位到opencv_files\opencv 并点击“Browse Build”选项,新建一个 build_x 文件夹。配置完成后,点击“Configure”,等待从raw.githubusercontent.com下载文件。配置OPENCV_EXTRA_MODULES_PATH为 ../opencv_contrib/modules,确保再次点击“Configure”。 接下来,移除不需要的模块,确保wechat_qrcode 所需的四个文件没有下载失败,以及没有其他严重错误。Step 3:使用 VS 编译模块静态链接库
在VS中选择Debug或Release设置,并在解决方案资源管理器中找到ALL_BUILD,右键生成。完成后,再次在INSTALL项目上右键生成。最后,打开build_x\install 文件夹,确保文件已经生成。然后,复制install文件夹,回到最初克隆的opencvsharp 仓库,新建文件夹叫opencv_files,粘贴install文件夹,并重命名为opencv_win_x。Step 3:精简并编译 OpenCvSharpExtern
打开src\OpenCvSharpExtern\OpenCvSharpExtern.vcxproj文件,并使用VS Code(或记事本)进行编辑。调整Debug/Release设置与之前一致,开始精简这些文件。删除不必要的文件内容后,生成OpenCvSharpExtern 项目,生成后的dll文件大小仅为8. MB。Step 4:编译 OpenCvSharp
对于C#绑定项目的依赖关系,这里直接编译即可,dll大小为 KB。同时,编译OpenCvSharp.Extensions项目中的BitmapConverter,如有需要。Step 5:发布到 nuget
为了避免在项目中添加原生库 OpenCvSharpExtern.dll,本文介绍如何将其打包成自己的 nuget 包。创建目录结构,包括 build、lib、runtimes 文件夹,并为TFM、包名创建相应的文件。如果需要支持 x 架构,可自行复制中间的ItemGroup。在根目录下创建 nuget 包元数据文件,最终的目录结构如下: 使用nuget独立程序进行打包后,在指定位置发布,等待审核通过即可在项目中通过nuget安装。 测试可用性,确保编译后的库满足应用需求。djangoå¦ä½å®ç°äºç»´ç ï¼
导读ï¼å¾å¤æåé®å°å ³äºdjangoå¦ä½å®ç°äºç»´ç çç¸å ³é®é¢ï¼æ¬æé¦å¸CTOç¬è®°å°±æ¥ä¸ºå¤§å®¶å个详ç»è§£çï¼ä¾å¤§å®¶åèï¼å¸æ对大家ææ帮å©ï¼ä¸èµ·æ¥ççå§ï¼å¦ä½ä½¿ç¨javaå¼åäºç»´ç 代ç 1ï¼ä½¿ç¨SwetakeQRCodeå¨Java项ç®ä¸çæäºç»´ç
ä¸è½½å°å
æç
è¿ä¸ªæ¯æ¥æ¬äººåçï¼çæçæ¯æ们常è§çæ¹å½¢çäºç»´ç
å¯ä»¥ç¨ä¸æ
å¦ï¼ghjjjjj
2ï¼ä½¿ç¨BarCode4jçææ¡å½¢ç åäºç»´ç
BarCode4jç½åï¼
barcode4jæ¯ä½¿ç¨datamatrixçäºç»´ç çæç®æ³ï¼ä¸ºæ¯æqrçç®æ³
datamatrixæ¯æ¬§ç¾çæ åï¼qr为æ¥æ¬çæ åï¼
barcode4jä¸è¬çæåºæ¥æ¯é¿æ¹å½¢ç
å¦ï¼alecyan
è¿ä¸ªå客è¿æ¹é¢è¯´çæºæ¸ æ¥çï¼
3ï¼zxing
zxingè¿ä¸ªæ¯googleç
ä¸è½½å°å
Java代ç ï¼
importjava.io.File;
importjava.util.Hashtable;
importcom.google.zxing.BarcodeFormat;
importcom.google.zxing.EncodeHintType;
importcom.google.zxing.MultiFormatWriter;
importcom.google.zxing.client.j2se.MatrixToImageWriter;
importcom.google.zxing.common.BitMatrix;
importcom.google.zxing.qrcode.QRCodeWriter;
publicclassQRCodeEvents{
publicstaticvoidmain(String[]args)throwsException{
Stringtext="ä½ å¥½";
intwidth=;
intheight=;
Stringformat="png";
Hashtablehints=newHashtable();
hints.put(EncodeHintType.CHARACTER_SET,"utf-8");
BitMatrixbitMatrix=newMultiFormatWriter().encode(text,BarcodeFormat.QR_CODE,width,height,hints);
FileoutputFile=newFile("new.png");
MatrixToImageWriter.writeToFile(bitMatrix,format,outputFile);
}
}
4ï¼googlechartapiå°±æå®ç°äºç»´ç çæ¹æ³
å©ç¨è¿ä¸ªapiï¼ä½¿ç¨googleappengineè¿è¡å®ç°ã
5ï¼JSçæäºç»´ç
使ç¨jQuery-qrcodeçæäºç»´ç
å ç®å说ä¸ä¸jquery-qrcodeï¼è¿ä¸ªå¼æºçä¸æ¹åºï¼å¯ä»¥ä»è·åï¼ï¼
qrcode.jsæ¯å®ç°äºç»´ç æ°æ®è®¡ç®çæ ¸å¿ç±»ï¼
jquery.qrcode.jsæ¯æå®ç¨jqueryæ¹å¼å°è£ èµ·æ¥çï¼ç¨å®æ¥å®ç°å¾å½¢æ¸²æï¼å ¶å®å°±æ¯ç»å¾ï¼æ¯æcanvasåtable两ç§æ¹å¼ï¼
æ¯æçåè½ä¸»è¦æï¼
Js代ç ï¼
text:""//设置äºç»´ç å 容
Js代ç ï¼
render:"canvas",//设置渲ææ¹å¼
width:,//设置宽度
height:,//设置é«åº¦
typeNumber:-1,//计ç®æ¨¡å¼
correctLevel:QRErrorCorrectLevel.H,//çº éç级
background:"#ffffff",//èæ¯é¢è²
foreground:"#"//åæ¯é¢è²
使ç¨æ¹å¼é常ç®å
Js代ç ï¼
jQuery('#output').qrcode({ width:,height:,correctLevel:0,text:content});
ç»è¿ç®åå®è·µï¼
使ç¨canvasæ¹å¼æ¸²ææ§è½è¿æ¯é常ä¸éçï¼ä½æ¯å¦æç¨tableæ¹å¼ï¼æ§è½ä¸å¤ªçæ³ï¼ç¹å«æ¯IE9以ä¸çæµè§å¨ï¼æ以éè¦èªè¡ä¼åä¸ä¸æ¸²ætableçæ¹å¼ï¼è¿éå°±ä¸ç»è¿°äºã
å ¶å®ä¸é¢çjsæä¸ä¸ªå°å°ç缺ç¹ï¼å°±æ¯é»è®¤ä¸æ¯æä¸æã
è¿è·jsçæºå¶æå ³ç³»ï¼jquery-qrcodeè¿ä¸ªåºæ¯éç¨charCodeAt()è¿ä¸ªæ¹å¼è¿è¡ç¼ç 转æ¢çï¼
èè¿ä¸ªæ¹æ³é»è®¤ä¼è·åå®çUnicodeç¼ç ï¼ä¸è¬ç解ç å¨é½æ¯éç¨UTF-8,ISO--1çæ¹å¼ï¼
è±ææ¯æ²¡æé®é¢ï¼å¦ææ¯ä¸æï¼ä¸è¬æ åµä¸Unicodeæ¯UTF-å®ç°ï¼é¿åº¦2ä½ï¼èUTF-8ç¼ç æ¯3ä½ï¼è¿æ ·äºç»´ç çç¼è§£ç å°±ä¸å¹é äºã
解å³æ¹å¼å½ç¶æ¯ï¼å¨äºç»´ç ç¼ç åæå符串转æ¢æUTF-8ï¼å ·ä½ä»£ç å¦ä¸ï¼
functionutfto8(str){
varout,i,len,c;
out="";
len=str.length;
for(i=0;ilen;i++){
c=str.charCodeAt(i);
if((c=0x)(c=0xF)){
out+=str.charAt(i);
}elseif(c0xFF){
out+=String.fromCharCode(0xE0|((c)0x0F));
out+=String.fromCharCode(0x|((c6)0x3F));
out+=String.fromCharCode(0x|((c0)0x3F));
}else{
out+=String.fromCharCode(0xC0|((c6)0x1F));
out+=String.fromCharCode(0x|((c0)0x3F));
}
}
returnout;
}
pythonå¦ä½å®ç°æ¡å½¢ç åäºç»´ç å¶ä½ï¼
pythonä¸ä¸é¨æçææ¡å½¢ç åäºç»´ç çåºï¼è¿éç®åä»ç»ä¸ä¸å®ç°è¿ç¨ï¼ä»£ç éä¸å¤ï¼ä¹å¾å¥½ç解ï¼å®éªç¯å¢win+python3.6+pycharm5.0ï¼ä¸»è¦å 容å¦ä¸ï¼
å¶ä½æ¡å½¢ç
è¿éæ2个åºï¼åå«æ¯pybarcodeåpystrichï¼å¯ä»¥ç´æ¥æ ¹æ®è¾å ¥çæ°åçææ¡å½¢ç ï¼ä¸é¢æç®åä»ç»ä¸ä¸è¿2个åºçå®è£ å使ç¨ï¼
1.å®è£ pybarcodeï¼è¿ä¸ªç´æ¥å¨cmdçªå£è¾å ¥å®è£ å½ä»¤âpipinstallpybarcodeâå°±è¡ï¼å¦ä¸ï¼å¾å¿«å°±è½å®è£ æåï¼
å®è£ å®æåï¼æ们就å¯ä»¥ç¼åç¸å ³ä»£ç æ¥å®ç°å¶ä½æ¡å½¢ç äºï¼æµè¯ä»£ç å¦ä¸ï¼å¾ç®åï¼è¿é以çæeanæ¡å½¢ç 为ä¾ï¼ç¨åºé»è®¤ä¼å°æ¡å½¢ç ä¿å为pngæ ¼å¼ï¼
çæçæ¡å½¢ç å¦ä¸ï¼
2.å®è£ pystrichï¼è¿ä¸ªä¸ä¸é¢ç±»ä¼¼ï¼ç´æ¥å¨cmdçªå£è¾å ¥å½ä»¤âpipinstallpystrichâå°±è¡ï¼å¦ä¸ï¼
å®è£ æååï¼æ们就å¯ä»¥ç¼åæµè¯ä»£ç äºï¼å¦ä¸ï¼å¾ç®åï¼
çæçæ¡å½¢ç å¦ä¸ï¼
å¶ä½äºç»´ç
è¿éæä¸ä¸ªåºqrcodeï¼ä¸é¨ç¨äºå¶ä½äºç»´ç ï¼è¿ä¸ªæ以åä¹ä»ç»è¿ï¼ä¸é¢æåç®åä»ç»ä¸ä¸è¿ä¸ªåºçå®è£ å使ç¨ï¼
1.å®è£ qrcodeï¼è¿ä¸ªç´æ¥å¨cmdçªå£è¾å ¥å½ä»¤âpipinstallqrcodeâå°±è¡ï¼å¦ä¸ï¼
2.å®è£ æååï¼æ们就å¯ä»¥ç¼åç¸å ³ä»£ç æ¥çæäºç»´ç äºï¼æµè¯ä»£ç å¦ä¸ï¼å¾ç®åï¼ä¹å¾å¥½ç解ï¼
ç¹å»è¿è¡ç¨åºï¼çæçäºç»´ç å¦ä¸ï¼
ææºæ«æææå¦ä¸ï¼å¦ææ¯ç½åï¼ä¼ç´æ¥è·³è½¬å°å¯¹åºç½é¡µï¼å¦ææ¯æåï¼å解æåºå¯¹åºå 容ï¼
è³æ¤ï¼æ们就å®æäºå©ç¨pythonæ¥å¶ä½æ¡å½¢ç åäºç»´ç ãæ»çæ¥è¯´ï¼æ´ä¸ªè¿ç¨ä¸é¾ï¼é½æç°æçåºå¯ä»¥ç´æ¥ä½¿ç¨ï¼ä»£ç éä¹ä¸å¤ï¼å¾å¥½ç解ï¼åªè¦ä½ æä¸å®çpythonåºç¡ï¼çæä¸ä¸ç¸å ³ç¤ºä¾å代ç ï¼å¾å¿«å°±è½ææ¡çï¼ç½ä¸ä¹æç¸å ³æç¨åèµæï¼æå ´è¶£çè¯ï¼å¯ä»¥æä¸ä¸ï¼å¸æ以ä¸å享çå 容è½å¯¹ä½ ææ帮å©å§ï¼ä¹æ¬¢è¿å¤§å®¶è¯è®ºãçè¨ã
å¦ä½å建äºç»´ç ï¼å¯ä»¥éè¿ç¬¬ä¸æ¹è½¯ä»¶æ¥å¶ä½ã
äºç»´ç å称äºç»´æ¡ç ï¼æ常è§çå½¢å¼æ¯QRCodeï¼QRå ¨ç§°QuickResponseï¼æ¯ä¸ä¸ªè¿å å¹´æ¥ç§»å¨è®¾å¤ä¸è¶ æµè¡çä¸ç§ç¼ç æ¹å¼ã
å®æ¯ä¼ ç»çBarCodeæ¡å½¢ç è½åæ´å¤çä¿¡æ¯ï¼ä¹è½è¡¨ç¤ºæ´å¤çæ°æ®ç±»åã
äºç»´æ¡ç /äºç»´ç ï¼2-dimensionalbarcodeï¼ç¨æç§ç¹å®çå ä½å¾å½¢æä¸å®è§å¾å¨å¹³é¢ï¼äºç»´æ¹åä¸ï¼åå¸çé»ç½ç¸é´çå¾å½¢è®°å½æ°æ®ç¬¦å·ä¿¡æ¯çã
å¨ä»£ç ç¼å¶ä¸å·§å¦å°å©ç¨ææ计ç®æºå é¨é»è¾åºç¡çâ0âãâ1âæ¯ç¹æµçæ¦å¿µï¼ä½¿ç¨è¥å¹²ä¸ªä¸äºè¿å¶ç¸å¯¹åºçå ä½å½¢ä½æ¥è¡¨ç¤ºæåæ°å¼ä¿¡æ¯ï¼éè¿å¾è±¡è¾å ¥è®¾å¤æå çµæ«æ设å¤èªå¨è¯è¯»ä»¥å®ç°ä¿¡æ¯èªå¨å¤çã
å®å ·ææ¡ç ææ¯çä¸äºå ±æ§ï¼æ¯ç§ç å¶æå ¶ç¹å®çå符éï¼æ¯ä¸ªå符å æä¸å®ç宽度ï¼å ·æä¸å®çæ ¡éªåè½çã
åæ¶è¿å ·æ对ä¸åè¡çä¿¡æ¯èªå¨è¯å«åè½ãåå¤çå¾å½¢æ转ååç¹ã
å¼å¾æ¶èçPython第ä¸æ¹åºç½ç»ç«ç¹ç¬å
ç¬åç½ç»ç«ç¹çåºScrapyâä¸ä¸ªå¿«éé«çº§çå±å¹ç¬ååç½é¡µééæ¡æ¶ãcolaâä¸ä¸ªåå¸å¼ç¬è«æ¡æ¶ãDemiurgeâåºäºPyQueryçç¬è«å¾®åæ¡æ¶ãfeedparserâéç¨feed解æå¨ãGrabâç«ç¹ç¬åæ¡æ¶ãMechanicalSoupâç¨äºèªå¨åç½ç»ç«ç¹äº¤äºçPythonåºãportiaâScrapyå¯è§åç¬åãpyspiderâä¸ä¸ªå¼ºå¤§çç¬è«ç³»ç»ãRoboBrowserâä¸ä¸ªç®åçï¼Pythoné£æ ¼çåºï¼ç¨æ¥æµè§ç½ç«ï¼èä¸éè¦ä¸ä¸ªç¬ç«å®è£ çæµè§å¨ã
交äºå¼è§£æå¨
交äºå¼Python解æå¨ã
IPythonâåè½ä¸°å¯çå·¥å ·ï¼é常ææç使ç¨äº¤äºå¼Pythonã
bpython-çé¢ä¸°å¯çPython解æå¨ã
ptpythonâé«çº§äº¤äºå¼Python解æå¨ï¼æ建äºpython-prompt-toolkitä¹ä¸ã
å¾åå¤ç
ç¨æ¥æä½å¾åçåº.
pillowâPillowæ¯ä¸ä¸ªæ´å æç¨ççPILã
hmapâå¾åç´æ¹å¾æ å°ã
imgSeekâä¸ä¸ªä½¿ç¨è§è§ç¸ä¼¼æ§æç´¢ä¸ç»å¾çéåç项ç®ã
nude.pyâ裸ä½æ£æµã
pyBarcodeâä¸åå©PILåºå¨Pythonç¨åºä¸çææ¡å½¢ç ã
pygramâ类似Instagramçå¾å滤éã
python-qrcodeâä¸ä¸ªçº¯Pythonå®ç°çäºç»´ç çæå¨ã
Quadsâåºäºååæ ç计ç®æºèºæ¯ã
scikit-imageâä¸ä¸ªç¨äºï¼ç§å¦ï¼å¾åå¤ççPythonåºã
thumborâä¸ä¸ªå°åå¾åæå¡ï¼å ·æåªè£ï¼å°ºå¯¸é设å翻转åè½ã
wandâMagickWandçPythonç»å®ãMagickWandæ¯ImageMagickçCAPIã
HTTP
使ç¨HTTPçåºã
requestsâ人æ§åçHTTP请æ±åºã
grequestsârequestsåº+geventï¼ç¨äºå¼æ¥HTTP请æ±.
httplib2âå ¨é¢çHTTP客æ·ç«¯åºã
treqâ类似requestsçPythonAPIæ建äºTwistedHTTP客æ·ç«¯ä¹ä¸ã
urllib3âä¸ä¸ªå ·æ线ç¨å®å ¨è¿æ¥æ± ï¼æ¯ææ件postï¼æ¸ æ°å好çHTTPåºã
æ°æ®åº
Pythonå®ç°çæ°æ®åºã
pickleDBâä¸ä¸ªç®åï¼è½»é级é®å¼å¨åæ°æ®åºã
PipelineDBâæµå¼SQLæ°æ®åºã
TinyDBâä¸ä¸ªå¾®åçï¼é¢åææ¡£åæ°æ®åºã
ZODBâä¸ä¸ªPythonåç对象æ°æ®åºãä¸ä¸ªé®å¼å对象å¾æ°æ®åºã
Webæ¡æ¶
å ¨æ webæ¡æ¶ã
DjangoâPythonçææµè¡çwebæ¡æ¶ã
awesome-djangoç³»å
Flaskâä¸ä¸ªPythonå¾®åæ¡æ¶ã
ç³»å
Pyramidâä¸ä¸ªå°å·§ï¼å¿«éï¼æ¥å°æ°çå¼æºPythonwebæ¡æ¶ã
awesome-pyramidç³»å
Bottleâä¸ä¸ªå¿«éå°å·§ï¼è½»é级çWSGIå¾®åwebæ¡æ¶ã
CherryPyâä¸ä¸ªæç®çPythonwebæ¡æ¶ï¼æä»HTTP/1.1åè®®ä¸å ·æWSGI线ç¨æ± ã
TurboGearsâä¸ä¸ªå¯ä»¥æ©å±ä¸ºå ¨æ 解å³æ¹æ¡çå¾®åæ¡æ¶ã
web.pyâä¸ä¸ªPythonçwebæ¡æ¶ï¼æ¢ç®åï¼å强大ã
web2pyâä¸ä¸ªå ¨æ webæ¡æ¶åå¹³å°ï¼ä¸æ³¨äºç®åæç¨ã
Tornadoâä¸ä¸ªwebæ¡æ¶åå¼æ¥ç½ç»åºã
HTMLå¤ç
å¤çHTMLåXMLçåºã
BeautifulSoupâ以Pythoné£æ ¼çæ¹å¼æ¥å¯¹HTMLæXMLè¿è¡è¿ä»£ï¼æç´¢åä¿®æ¹ã
bleachâä¸ä¸ªåºäºç½ååçHTMLæ¸ çåææ¬é¾æ¥åºã
cssutilsâä¸ä¸ªPythonçCSSåºã
html5libâä¸ä¸ªå ¼å®¹æ åçHTMLææ¡£åç段解æååºåååºã
lxmlâä¸ä¸ªé常快éï¼ç®åæç¨ï¼åè½é½å ¨çåºï¼ç¨æ¥å¤çHTMLåXMLã
MarkupSafeâ为Pythonå®ç°XML/HTML/XHTMLæ è®°å®å ¨å符串ã
pyqueryâä¸ä¸ªè§£æHTMLçåºï¼ç±»ä¼¼jQueryã
untangleâå°XMLæ档转æ¢ä¸ºPython对象ï¼ä½¿å ¶å¯ä»¥æ¹ä¾¿ç访é®ã
xhtml2pdfâHTML/CSS转PDFå·¥å ·ã
xmltodictâåå¤çJSONä¸æ ·å¤çXMLã
游æå¼å
è¶ èµç游æå¼ååºã
Cocos2dâcocos2dæ¯ä¸ä¸ªç¨æ¥å¼å2D游æï¼ç¤ºä¾åå ¶ä»å¾å½¢/交äºåºç¨çæ¡æ¶ãåºäºpygletã
Panda3Dâç±è¿ªå£«å°¼å¼åç3D游æå¼æï¼å¹¶ç±å¡å åºæ¢ é娱ä¹ææ¯ä¸å¿è´è´£ç»´æ¤ã使ç¨C++ç¼å,é对Pythonè¿è¡äºå®å ¨çå°è£ ã
PygameâPygameæ¯ä¸ç»Python模åï¼ç¨æ¥ç¼å游æã
PyOgreâOgre3D渲æå¼æçPythonç»å®ï¼å¯ä»¥ç¨æ¥å¼å游æå仿çç¨åºçä»»ä½3Dåºç¨ã
PyOpenGLâOpenGLçPythonç»å®åå ¶ç¸å ³APIsã
PySDL2âSDL2åºçå°è£ ï¼åºäºctypesã
RenPyâä¸ä¸ªè§è§å°è¯´ï¼visualnovelï¼å¼æã
pythonæä¹æå¾ççæäºç»´ç ï¼äºç»´ç ä¸æ¯æç´æ¥ç¼è¯å¾çï¼ç®åäºç»´ç æ¯æçæ ¼å¼ææ°åï¼åæ¯ï¼æ±åï¼ç½åçï¼å¦æéè¦æ«æäºç»´ç æ¾ç¤ºå¾ççè¯ï¼ä½ éè¦æå¾çä¸ä¼ å°æå¡å¨æè èªå·±çç½é¡µä¸ï¼å¾å°ä¸ä¸ªç½åï¼æç½åä¿åå°txtææ¬æè Excel表ä¸ï¼å¯¼å ¥å°äºç»´ç çæ软件ä¸ï¼ï¼å°±æ¯å½å ¥äºç»´ç çå 容ãå ·ä½æä½å¦ä¸ï¼
æå¼äºç»´ç çæ软件ï¼è®¾ç½®ä¸é¡µçº¸å¼ åæ ç¾ç尺寸ã
ç¹å»è½¯ä»¶ä¸æ¹å·¥å ·æ ä¸çæ°æ®åºè®¾ç½®æé®ï¼å¼¹åºæ°æ®åºè®¾ç½®å¯¹è¯æ¡ï¼ç¹å»æ·»å ï¼éæ©è¦å¯¼å ¥çæ°æ®åºç±»åï¼txtæè excel表ï¼æ ¹æ®æ示ç¹å»æµè§ï¼æµè¯è¿æ¥ï¼æ·»å ã
ç¹å»è½¯ä»¶å·¦ä¾§çäºç»´ç æé®ï¼å¨ç»å¸ä¸ç»å¶äºç»´ç 对象ï¼åå»äºç»´ç ï¼å¨å¾å½¢å±æ§-æ°æ®æºä¸ï¼ç¹å»ä¿®æ¹æé®ï¼å¨æ°æ®å¯¹è±¡ç±»åä¸éæ©æ°æ®åºå¯¼å ¥ï¼å¨å段ä¸éæ©ç¸åºçå段ï¼ä¼åºç°å¯¹åºçå 容ãç¹å»ç¼è¾-ç¡®å®ã
设置好ä¹åï¼å¯ä»¥ç¹å»ä¸æ¹å·¥å ·æ ä¸çæå°é¢è§ï¼çä¸é¢è§ææï¼å¯ä»¥ç¨å¾®ä¿¡æè æ¯ä»å®æ«æï¼
äºç»´ç æ¯æä¹å¶ä½åºæ¥çï¼äºç»´ç å¶ä½æ¹æ³å¦ä¸ï¼
1ãææºä¸è¦æä¸ä¸ªäºç»´ç çæå¨ãå¨äºç»´ç çæå¨ä¸è¾å ¥æ³è¦çæåï¼ç¹å»çæã
2ãå æ°æ¸ çæçäºç»´ç 横ç«æ¯å è¡ãè¿éä¸å ±æ¯è¡ï¼å¤§å°éæï¼å¯ä»¥éç¨2mmä¸ä¸ªå°æ¹æ ¼ï¼å ±5cmé¿ã
3ãå¨åéçä½ç½®ç»å¶ï¼ä¸ºäºæ¹ä¾¿å线ï¼2mmç»ä¸æ¨ªï¼åè¾¹é½ç»ãè¿æ ·å¯ä»¥æ¹ä¾¿è¿çº¿ï¼ä¸è³äºå¼¯æ²ç太å害ã
4ãç¨é ç¬å°ä¸¤è¾¹ç线è¿èµ·æ¥ãä¸è¬äºç»´ç ä¸ä¸ªè§ï¼æ£æ¹å½¢è¾¹é½æ¯ä¸ä¸ªæ ¼åãå¦æææ ¼åæ°éçè¯ï¼æ£æ¹å½¢éè¾¹çå°æ£æ¹å½¢å ä¸ä¸ªæ ¼åå ±ä¹ä¸ªæ ¼åï¼ä¸è¡ä¸è¡æ¥ï¼æ°å¯¹äºåè½ç¬ã
5ãä¸æ¾å¿å¯ä»¥å ç¨é ç¬æè¦æ¶é»çå°æ¹ç»ä¸æ线ï¼å°ç¨é ç¬ç»çæ ¼åæ¦æï¼å»æ«ä¸æ«çè½ä¸è½æ«åºæ¥ï¼å¯ç¨å¾®ä¿¡çæ«ä¸æ«ã
ç»è¯ï¼ä»¥ä¸å°±æ¯é¦å¸CTOç¬è®°ä¸ºå¤§å®¶æ´ççå ³äºdjangoå¦ä½å®ç°äºç»´ç çå ¨é¨å 容äºï¼æè°¢æ¨è±æ¶é´é 读æ¬ç«å 容ï¼å¸æ对æ¨ææ帮å©ï¼æ´å¤å ³äºdjangoå¦ä½å®ç°äºç»´ç çç¸å ³å 容å«å¿äºå¨æ¬ç«è¿è¡æ¥æ¾åã