掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

[工具] (20200512彩色版Release)_制作图片字典工具的试作

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新& A" I* x$ |4 E% M2 h

8 y6 q. Y/ [. k# j3 H>套索功能! c3 V& V* @1 A- i$ k

( c7 H1 [- i+ J) c7 [( o修正在词条的下方有很大的空白0 g( @" r/ h- O( G# t9 a! f

" J# Z" r' c$ X! |1 ]线条再细些

该用户从未签到

发表于 2016-5-22 00:22:14 来自手机 | 显示全部楼层
支持!我有一些不成熟的想法,不知是否可行: 1、(抱歉我可能看得不够仔细,有错请谅解)楼主是不是先选中词条再裁剪图片?是否可以加一种模式,先把图片上所有的词条框选好做上标记,然后在浏览词条时一个一个选。这样可能会提高效率。当然,重要的是为我要说的第二点做准备。 2、众所周知,mdx的词条是没有分级的,但对于汉语词典来说,字以及其下的词之间还是有联系的。为何不在截图时加上分级系统?即在截图时,按住某个键,那么此时截得图就被记录为主图的一个分图(生成个文件,专门记录图片间分级关系),这样在处理文本时,可方便调用(如:①在字的词条下生成词的超链接。②高度模板化,做一个引用模板,在字的词条下也调用对应的词,不过通过代码实现折叠现实,就像oald9那样。③系统性存好分级关系,让制作者自己发挥)。不仅汉语词典,在截图时把每个大的分级都标上号,便可实现安原书顺序浏览词条了(加超链接实现,或最后做完后安编号顺序排列源文件,用最新版mdxbuild生成)。 3、待续…… 最后还是感谢楼主的付出。待工具完善后,用mdict看图片版词典就太完美了,没有这工具制作都是大问题! 我表达的可能有些混乱了,实现不了也无伤大雅,毕竟楼主把工具做成现在这样已经是非常大的福利了,我们这些享受奉献的没有权利要求奉献者按我们的意思来!

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层
9 |5 ]2 j; [3 W1 G5 k
, f4 j) @  q6 }; P
解压ZIP:
2 @1 d2 V0 e2 `$ Q! Y- C
, y6 t; ~8 \2 G2 s3 k2 sTEST.html 可以用浏览器查看一下效果
6 G8 E, }0 e, uTEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!
7 t( w! ~- R) @& v不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39, X3 r+ C) s+ U( c( F
单纯给出坐标3 [7 F6 Q- D( C, V
比如
* z3 T3 I" l2 g3 X0 |7 goffering#20,400
& p+ X* B2 E' v- I# W/ p3 ~
我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
3 Z4 ~, Q8 Z: O% D/ }9 F9 Tmargin-top = 纵坐标百分比%
7 s* g+ s+ b3 D' R* _% H------------------------5 m* p2 d- z, }9 U* K8 G
注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python
    8 J0 P0 {+ H9 s! f+ q) ]% t) q% t  ^5 h
  2. # -*- coding: utf-8 -*-/ i. o6 }7 g- Y
  3. from Tkinter import *
    * E) f/ f3 n# Z! n7 v6 \8 W
  4. from tkFileDialog import askopenfilename2 h& K% g9 D8 S! A
  5. from PIL import Image, ImageTk* k! h2 [  H& t2 ?7 B# e9 S
  6. 9 D0 g7 Q+ D  A& d3 B
  7. if __name__ == "__main__":3 j% I7 ]; L( X/ A  U2 h
  8.     root = Tk()
    3 y* L( r/ G$ ]% _
  9.     #setting up a tkinter canvas with scrollbars, w5 Q7 t" m. J1 Q3 S
  10.     frame = Frame(root, bd=2, relief=SUNKEN)8 S! _6 z" i9 X2 _: e' p9 [& @
  11.     frame.grid_rowconfigure(0, weight=1)7 u7 _6 j' Y* ]3 S7 C
  12.     frame.grid_columnconfigure(0, weight=1)& {& _* S/ a2 |
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)
    ! Q, |" k. V9 W* V
  14.     xscroll.grid(row=1, column=0, sticky=E+W)
    # E% W( S* H3 S6 {% _
  15.     yscroll = Scrollbar(frame)  Z. Z0 d' d6 u# U8 b2 u7 O
  16.     yscroll.grid(row=0, column=1, sticky=N+S)
    * F8 X0 u( m8 b
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)8 ^6 p) G# O% c- w
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
    . o7 R" y) A* X: ]6 P
  19.     xscroll.config(command=canvas.xview). U, v. `5 s  V2 I" W  B7 A
  20.     yscroll.config(command=canvas.yview)& [" x. p+ I1 U: O
  21.     frame.pack(fill=BOTH,expand=1)
      b7 ]; f9 a3 b# i9 [

  22. : w+ E3 h# S$ R3 ]
  23.     #adding the image
    ) k1 t# {5 R5 }, @1 I3 l$ F
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')
    * `" b; b- w2 D: S
  25.     img = ImageTk.PhotoImage(Image.open(File))+ F% S2 O' l! ~5 o2 y' S2 ~* P
  26.     canvas.create_image(0,0,image=img,anchor="nw")/ ~( f0 ]1 q4 _5 ^/ V. g9 x2 H
  27.     canvas.config(scrollregion=canvas.bbox(ALL))
      b5 }& T' X; W2 q( N( c% g3 G
  28. 2 G0 J/ s" T5 Z. H
  29.     #function to be called when mouse is clicked
    6 D3 f* L* l9 T* b  J1 F( W
  30.     def printcoords(event):7 m& T4 I% _( ]$ h2 k2 z. W2 D
  31.         #outputting x and y coords to console0 Z$ U" R3 \" J( f5 A; F% J
  32.         canvas = event.widget
    1 k- H9 a1 j" q- O
  33.         x = canvas.canvasx(event.x)
    " w3 J& U7 T! c0 n4 t7 M0 K
  34.         y = canvas.canvasy(event.y)+ W& f9 G' \4 K! }; w
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")
    , O( X- x$ s9 z8 Y6 K( ]  ^
  36.         print x,y
    / O: y0 X; m4 L3 u* R: n6 P, R  b8 c
  37.         f = open('_coords.txt','a')
    " n4 ^1 Z5 I- c$ {' s% S5 K4 J
  38.         f.write('X: %s\tY: %s\n' % (x,y))# X5 g0 w+ ?6 ~9 ^
  39.         f.close()- ]6 x1 B/ F9 J
  40. 3 g' E6 f+ D! @' o) y$ @+ H
  41.     #mouseclick event
    ; q; E. [* }( N. m" L1 t1 \% _
  42.     canvas.bind("<Button 1>",printcoords)
    . e3 M% e5 s+ @; R% [& ?
  43.     root.mainloop()
    $ I2 v( m+ N7 C6 A, G9 t& i1 A
复制代码
0 |( M) n% y1 \3 M) F! i# j! F
* K; v7 N4 Y! T- r) x, A+ O
来源处:
6 `5 {, A) g8 }) \' o1 D$ `http://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:527 N: r1 x. M; z" I0 S
解压ZIP:
+ ^8 v0 b, I7 y6 x9 }1 J, E5 h
" ]4 h9 t* |+ l* O  ~5 QTEST.html 可以用浏览器查看一下效果
7 _1 r: _# @- ?% d
基本了解
0 d: t8 S2 g3 p1 h/ J2 o& X/ Hcss position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑
, D( w9 G% `$ X5 }
chigre3 发表于 2016-5-22 00:58
! @8 o: h1 M( c$ u1 f纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )& i4 s9 H% @9 Z' J
margin-top = 纵坐标百分比%
& H1 Y. j# r3 B! T2 D------------- ...
% X# @6 ~* r4 b  I& O. F

) ^9 N5 ~0 g$ I: g, }: w& s  h6 h& ^- [3200x5000, z( ^9 x, ^% D
y=2500
, N& e, o) s( c. l' q1 i2 Zmargin-top=2500/3200*100=78.12%
/ L  J* Z( r& {% |4 M
# }! \$ f, t* R不知道如何理解这78.12%?
+ A( U, D" y9 z7 f* d5 v. s$ x% I
9 {2 s; S0 c; R& }6 T" T
7 `: B" k! l  b* F! vmargin-left的算法?
1 U8 e5 \* l+ H1 s7 w9 c; I- w  l- k( y2 c

+ D( _# s4 Y2 D1 S* I. _. ~

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确( g! `7 W* N3 l" F, |
比如两栏的词典:
! B3 c8 U- {. X# ^9 `# I! P, ^. @1)输入分栏的三条竖线位置,估计只有个别页面需要调整& R) O, g% Y: w2 Y2 G$ S1 G' c
2)只需手工画出词与词之间的分割横线。
, ~" v9 Y3 G5 p$ d2 H- o- Y! ?$ O再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
# H- x/ z% _3 Y$ q) [- w. `3)每章划分词条完毕,一次性切割图形
+ d- K* {5 @: `

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑
3 a  I* w# v: M& c3 {
vbnet 发表于 2016-5-21 23:02
4 _+ S* y0 t5 ^- g6 B>固定框无法向图片下方移动。
+ C( `9 \- g6 W

( c( C$ e* P. j& s8 ~固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。* r1 C# p1 q  h# o4 a

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05
4 n; k" K3 O* M3 o7 W& e& Z固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...
' J; @9 T- X9 i* E' V( K2 K0 f
改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新1 N& ?; V5 M7 ^8 r2 w3 n4 ]

8 Z1 O8 D6 F- T$ i>固定框功能) h" a* Q! E$ F( g# p; \

, H" N9 ?' V$ l* E修正卷轴下拉后,不能往下拖动的情况6 S0 `# g" X3 P4 R9 H
% R' q  k1 x$ A

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑 " A/ V. M$ p) W; G( W) ?' y
chigre3 发表于 2016-5-21 07:29
" R7 k! e! F4 E9 e. |8 L* v3 fvbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。

, u7 Z- w0 Q" f/ o) ~: q
. J, c: [3 z' ]1 Z9 e- m8 h! [: W! ~9 Y% V这样方式如何
8 `2 R- O% u7 }) p$ U$ k3 q  }7 e& k8 ^) S
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方% d* A: W. b) |5 T

  U: F- f( \7 N8 p; O  _2 V" R点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮
$ e# R1 c/ p  C4 \- X! y往后只点图片" R$ H: |' a# s; O2 ^$ H' ~4 Z% q
& d* C3 `2 O0 a' v
' a7 ?6 L! M( y4 e# O+ s& I) Q
还是加入公式算出%?( w2 `7 V' d6 x; F/ E
$ X9 [4 V: i  V9 H
7 a8 }$ T8 a$ V8 c
4 Z: {, @  w2 i: b6 I
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?# e( x9 r0 v; G$ p! j3 h
' e3 K, p# R! Z0 x0 E) p

# b' ~! S+ W1 m% \# _! n1 j) [% E9 j7 }  X6 t9 o8 x: q
如附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41
! b4 y1 {* @& j' ~2016022更新
4 Y; a& n4 `8 m! w; o
" \! a/ I1 s9 _2 x8 z: r>固定框功能

; R: h- B: u" P完全正常了,效率好高,大赞赞赞赞!!!( g6 W2 j$ i1 u; J  F2 r3 s3 I  h( k
期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:521 q1 u! p6 |, z0 P! E2 `  G
这样方式如何5 }4 A/ F5 S+ _0 S6 {, {

; e$ V6 D& {+ X2 b$ ~7 L开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

. @- e# t$ M" r整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:386 M' t: |5 J4 Q+ C$ }
完全正常了,效率好高,大赞赞赞赞!!!7 F7 e" I! R! P* |$ `! k
期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

" t/ y" T# j' d想法5 b4 a; v8 X1 Z8 Q/ W
a,b,c,d指向同一张图, U" v8 Q$ C6 k# K
a词存图,设a为跳转目标,b,c,d指向a- R+ e! k% \1 Y( c4 j7 ]5 j  ^
------产生对照表---------------9 U5 E) @: p) V5 C) W
b#a9 T( F/ R/ ?# Y+ W7 A
c#a& U$ W' C3 B& A6 l
d#a! w5 ^! L  D9 @* {3 \0 r* i
--------------------------------------------------------
3 |' R7 d; ~- S) q6 `3 P寻找:
6 \2 H/ K8 i  p(^.*)#(.*$)
( u! r5 p4 o' Z# M3 j" y5 K- F* e取代为:
% D* V8 r# M1 g3 U: I\1\r\n@@@LINK=\2\r\n</>
; l$ L4 K# A/ |/ X4 |-------------------------------
% V- p8 {+ A, T; h' U2 f0 \b
# ]  S/ y) A  k8 W@@@LINK=a( y+ I1 j$ _, \% |' K0 G
</>, t0 x* d- Y1 b4 C% J
c  V  W7 Y4 o  c5 ]. V- a5 y/ H  n
@@@LINK=a6 c# l  O' e$ G; c- A  g* Y
</>" G* }, f- h; r; D; T- G' \' m
d. i# |7 A, \9 W" b8 {  e7 e+ H7 @8 F
@@@LINK=a
" D) \/ ]+ f, T( A</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:525 B& ?& B% H+ W# g7 p7 R
这样方式如何6 c- @. C  f/ X

6 V8 U+ d+ I4 l开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
- n2 q" [/ [" a
这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:527 }$ @0 l/ r* G7 C/ V# {: {9 D
这样方式如何8 |. W5 H3 `: a( t/ |  i+ \

) p- g$ y9 c2 w6 Y开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
3 F3 q+ p; K& t+ Y
默认的情况下就是你说的这样。
7 F8 E9 S+ `% z4 V- s之前的测试文件还在吧?+ p/ t& q; A( N
输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。
! d% M  g! e8 L/ @' o/ p  u+ L5 v& Y单击这儿的数字,会自动跳到垂直 位置
/ s% a  _- u2 M7 a" M' v- ^单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
0 A$ e; k. O* M# `) j" W* _这样方式如何4 Q7 y. y8 e6 Q( J6 S" G* g4 i
" _, ^1 b9 o: D$ g! d; @  `6 f
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
* u4 e/ b$ [6 P$ ]5 x% K$ |
最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31' k; I7 ~* O5 ?' \! O9 t
这个可以测试吗?
$ m, h8 [9 ?! H1 d
用法如上所述

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00: G) m, S6 b+ C: l  `( Z
最初加载的words列表如果也有极少的缺词可以手工加入吗?

* @- l, y8 _& i' s要等更新
% [- z+ U6 B8 g7 c" P. K% a7 ^用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:110 Y) r& c. H% |$ T
用法如上所述

$ m  d3 K& |0 {" @% i9 i9 R, t1 e* e万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:587 y+ C. x; l% F# r$ I
默认的情况下就是你说的这样。2 x) i6 W, W3 w* Q: d% U( m* @
之前的测试文件还在吧?
4 ?6 Q3 n4 i, _: d+ e输入YHCD_001,你会看到完整的该页词头索引,按 ...

  h4 }; @% p2 M' a等你实际做几页,看看效果如何
, V: G0 Y0 I7 [7 t) m: F6 E4 g" [3 P% K7 A( U

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11/ Z8 }- E- A* m( T; Q+ K. D
用法如上所述

8 d# K1 L- i  R打开的图片文件名是否可以写入?
- d* U8 {) U  K8 R* I/ ~4 g这样方便后期编辑。
- b) F( z4 V- Z$ ~4 h- ^----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27+ i1 o6 S) P( x5 n: b
想法
& z  J& ^( @3 m; T  q0 A6 Oa,b,c,d指向同一张图6 p5 C9 N  W! t3 |" R" z# e  ~
a词存图,设a为跳转目标,b,c,d指向a

6 s5 z' S) b1 W+ S想法好!集成到程序自动完成就超级棒了。
! u$ l" N% a7 u* l% F+ s不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。
; L( c) n2 j; m

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

小黑屋|手机版|Archiver|PDAWIKI |网站地图

GMT+8, 2025-4-17 17:43 , Processed in 0.022741 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表