掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新3 u! e3 b( O: ?2 y3 \

; m6 I0 V2 G$ A* u1 g0 P$ o>套索功能2 n& q6 C) M! m" m1 g; [

9 \% P4 A; h" T& B& Q修正在词条的下方有很大的空白
$ t5 }7 j+ `# I3 R' q4 x% d( ^
* b- v9 P- L" Z5 k线条再细些

该用户从未签到

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

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层
7 i- `& M: k6 G+ J  E& O

) O3 ?/ W0 U: n' ~解压ZIP:
7 U9 R  w9 p4 C. G+ P7 T& w  y! J0 l) n7 X! d
TEST.html 可以用浏览器查看一下效果
+ n7 k/ [  P, yTEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!' w  {) j& l2 _) C/ q
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39
$ V- `$ ]2 N( N- Y, y* {$ T单纯给出坐标
; P3 `* U/ t5 U  @9 p9 S比如
4 i) B' {8 `; U) R" V$ X' g+ [offering#20,400
5 c! V1 [1 I/ p9 j/ C5 F1 O
我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
( ~, H& h0 P4 i8 B6 d8 g  k- G' `1 Mmargin-top = 纵坐标百分比%) P6 l: |* q. y  u7 D7 d
------------------------5 K& T! @2 e+ V# J2 s/ T
注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python7 C6 q* O( f5 x. n5 T6 @6 `/ U
  2. # -*- coding: utf-8 -*-. F' {; q. M( R- X+ A6 z
  3. from Tkinter import *% ^& C7 A$ C; f  P. V7 h8 O! y2 M
  4. from tkFileDialog import askopenfilename: p0 U* _  U  P4 `
  5. from PIL import Image, ImageTk! l" J# P$ h5 k/ i: q
  6. ; e7 f8 [8 ~4 V
  7. if __name__ == "__main__":
    ; E  e. B  ]( }6 s
  8.     root = Tk()# M) F7 M" k/ f9 _* D
  9.     #setting up a tkinter canvas with scrollbars# B- B( [) m9 K' @+ k2 Y6 e
  10.     frame = Frame(root, bd=2, relief=SUNKEN)
    * R% n0 m% X9 N) s4 l: R8 c
  11.     frame.grid_rowconfigure(0, weight=1)$ p! B: z7 w  l
  12.     frame.grid_columnconfigure(0, weight=1); `4 r+ ^6 ~- p" N/ K
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)0 x$ S8 r2 d* d: t& x
  14.     xscroll.grid(row=1, column=0, sticky=E+W)
    2 j; h% s( J: M
  15.     yscroll = Scrollbar(frame)
    + ^1 v: q0 ]" v9 \0 C" O: K
  16.     yscroll.grid(row=0, column=1, sticky=N+S); A4 S' {& E# h9 o
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)* `8 s+ N7 s1 J  T& b3 ^# Z5 V2 \
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
      b( @, w7 R- J6 d- S
  19.     xscroll.config(command=canvas.xview)& g& M* q' x9 R, X" \- p' A
  20.     yscroll.config(command=canvas.yview)
    $ E- s* h8 G9 w7 h5 b/ S9 q( i
  21.     frame.pack(fill=BOTH,expand=1)) N0 t9 A3 z$ |6 c7 k& n

  22. 8 O) Y5 R$ K0 R2 t, X: ?+ K
  23.     #adding the image
    + Y! N, n3 Q: l; Z% z
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')! E9 O; M0 Z4 {# x
  25.     img = ImageTk.PhotoImage(Image.open(File))
    6 Q1 F% i- X9 |
  26.     canvas.create_image(0,0,image=img,anchor="nw")
    ; n0 W' [1 g) @/ k  x
  27.     canvas.config(scrollregion=canvas.bbox(ALL))
    2 @) Q, U  g- B$ T6 Q
  28. 2 x. K4 k' |# N) u/ Z& F6 p5 U2 z
  29.     #function to be called when mouse is clicked" D7 h% `$ w, y- p8 }
  30.     def printcoords(event):
    6 ~) w, G  Z: W) K- U9 x& p
  31.         #outputting x and y coords to console
    $ a% Y% d/ x' l
  32.         canvas = event.widget
    - ?( Z" A$ ~8 W% g- Z5 {( D! D
  33.         x = canvas.canvasx(event.x)
    . F0 {# Z. n5 q  H4 m$ _5 w6 U
  34.         y = canvas.canvasy(event.y), D# _) W% @% [- ^
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")
    / k$ n. |- w6 m3 ?3 U) ]
  36.         print x,y
    / p6 ?8 r! Y, h' n& q+ E3 ^
  37.         f = open('_coords.txt','a')$ z3 s: n0 B7 u5 |6 i
  38.         f.write('X: %s\tY: %s\n' % (x,y))
    + M5 E& \/ i4 ?. a) w8 M
  39.         f.close()8 o# e* e* ?9 h) O: _
  40. " P; S2 S/ w- L$ Y8 f# }
  41.     #mouseclick event1 s( _$ O9 d- B& `
  42.     canvas.bind("<Button 1>",printcoords)1 D  t# }1 F. ^) y/ n* t
  43.     root.mainloop()8 c5 o4 ~" g) {  u
复制代码
) E& o: f) G! d' S, W. C

- V. I8 u% ?! u1 I  S( k- r; ?来源处:
7 y; J' n* d+ V% S4 f. ohttp://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:52
4 w( i  Z4 V- e% j" n$ K$ v解压ZIP:
1 ^8 N: j1 ~" o: Z4 n  N
7 {9 ^  [) u2 N2 iTEST.html 可以用浏览器查看一下效果
# S7 Y- M! W  K! w- A
基本了解  i7 r4 B* ?3 }7 }# ]
css position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑 & n3 w$ m( n  U
chigre3 发表于 2016-5-22 00:58
" d& C3 |& O  g- Y! N( e纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )4 e7 Q' H. B8 H! `
margin-top = 纵坐标百分比%
& G6 i0 T, o- P------------- ...
& g- V6 Y, Y6 s+ F/ ^. M+ G4 @

9 W( d% t& v( y8 I/ @4 Y+ e' R9 m3200x5000
( H& L2 ?* s) B( D* a# [6 Iy=2500; U6 K. B) z" [0 k$ v+ |
margin-top=2500/3200*100=78.12%
1 v# J7 ?+ m* X' f" h7 E" o
4 u- @. }; |1 Q" g& n0 f$ f, I2 L不知道如何理解这78.12%?
( V7 J8 M1 v9 ]% r" _7 l. q- a2 K4 _/ b" M

, ~( {1 c, A0 `, C3 w+ G4 {margin-left的算法?/ n7 i! C1 m( W  t
# h1 C5 y9 M' G2 {6 B
# O% y. z6 T" Z" ?

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确
4 {2 t' [' c' c' P: T比如两栏的词典:
# M$ D4 |- `1 K4 q1 W0 C1)输入分栏的三条竖线位置,估计只有个别页面需要调整
5 M3 G! Q  d6 R7 M5 z2)只需手工画出词与词之间的分割横线。
' Z( [. k  k4 H7 m9 a3 r再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
. f  S* L( O0 v1 {. Z8 A! d3)每章划分词条完毕,一次性切割图形. }% Z0 o, {4 Z0 ~4 c8 M: e* D

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 7 l- [/ D. P) B5 R8 }' o' V, J" E
vbnet 发表于 2016-5-21 23:02
1 y6 \3 v' c9 f) O& v+ }>固定框无法向图片下方移动。

! y( k* @2 u: a% N/ [& j) H( W1 K8 m# S; N3 K
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。
5 p- ?* v7 k# [, W# T

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05
. S1 }8 f1 R, I( f固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...

3 z; |( G. S; O改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新6 Y( E% _0 J% x% n, n; b

! C8 h1 M- y* Q: X! o1 t+ d5 _( ?>固定框功能
  G7 j+ B7 r2 |% P) F4 I, `3 ]: ~3 U# F% s, H6 D4 d3 f
修正卷轴下拉后,不能往下拖动的情况
; b8 I% C2 N7 g! K  j. F6 X7 q, F: Q; H8 h+ ^4 R# J& W# r

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
- V% |# W9 h: y  }$ l5 j' d$ z
chigre3 发表于 2016-5-21 07:295 w3 |$ Q& R) l. L0 a0 D
vbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。

" f. V7 M6 j9 }- n. R3 B* }# }. w+ m# {( L1 l
这样方式如何" v1 d" [* y. J3 A( I, U+ l

5 o, E% K  l) F6 t* J1 T开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方
  m, c  O# b% Q+ t' Q
/ ?% C% h5 K; s$ S7 C点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮0 a; Y& b5 W; F% X! i
往后只点图片
$ ~/ D) f; Z% S& S* `0 J% h  I* ]3 ~
* R2 C; p) n+ N7 N
还是加入公式算出%?
- m' ~' k) D) I& X0 Z! f4 Q8 d- c  k& Q0 `

# y4 y  |$ O6 j8 a
' r, q7 s" t7 g3 [2 f& _如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?
+ q5 a& q/ M. T
' ~2 \1 K( q7 [+ i) V% ~1 r: A1 {
  R8 o' f$ \6 C& a* p) h$ y+ N2 [" _+ g, I! G
如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41+ m4 A# G& T1 d9 d. b6 N0 h% x
2016022更新
! d) M$ M) S+ l8 U) m$ Y5 Q% J0 D8 |, A- F
>固定框功能

* C8 h" N+ d7 x) e完全正常了,效率好高,大赞赞赞赞!!!
1 U# E/ a) M' @& b: ^' L  o3 E# E期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:523 a! K, v; y/ `# e* N
这样方式如何, D/ R6 c) [. i' S! s& C6 D8 G, o
( W4 n; W' {- D5 ?  A
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
3 q0 I  O6 g* S8 c/ k) t
整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
/ N1 _3 c- ~; j完全正常了,效率好高,大赞赞赞赞!!!
; _1 {, E" w( t. [0 b期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

. D5 C. _( G0 O2 r1 }% F$ c5 ]& K想法) G$ A$ ^. T/ P' `# v) `) J" ~
a,b,c,d指向同一张图% ]( Q; [; s1 |4 Z4 s. D! H9 ~
a词存图,设a为跳转目标,b,c,d指向a+ {) Z; n; O7 }7 y& z% P
------产生对照表---------------
5 ~5 A% G( D# xb#a/ j' }# ]' m% d5 P2 r5 b" s
c#a: I6 Y" j) I3 F+ U# q7 H9 `
d#a' y& T0 K) z  v) q$ {/ m. M$ K
--------------------------------------------------------
7 E' W/ d! x# C. t- A寻找:
2 D) a* i! D; s3 l, B( |/ T% ~(^.*)#(.*$)
/ v% r/ U- i% n6 m$ `1 Y5 f- X" u取代为:' j. O8 l0 [/ ^
\1\r\n@@@LINK=\2\r\n</>" P0 D6 Z7 [1 q4 o6 W& [1 p+ h! E
-------------------------------
$ H7 I) _7 |7 p# x( x6 W' xb& Z$ s2 E' q9 O7 X3 {7 b
@@@LINK=a5 ~  U1 A; y1 M/ x# e
</>% c+ i. R: K4 r2 T1 m# B
c
* Y- C) p3 {" N3 {@@@LINK=a. J" e7 L6 R" I; X9 r
</>- @( m) ~. y  k
d9 U3 B! x, ~1 L9 C9 L( x# s, Q" S
@@@LINK=a) ^, n+ k* ]. P2 n& v) @% H8 g/ S/ L
</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
  G$ U  ~9 j1 j1 U3 O/ P这样方式如何
* M$ U1 `# w/ e  w0 r9 c& F4 G2 U8 [% e
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
  b+ }6 o9 L- W: }7 \
这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52) l8 N" x6 e- M! a9 w& r4 h& s' z
这样方式如何3 z) m% f. k5 V8 h* H3 j5 R

: ?+ M- b. g7 g开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
( ?9 t" d) e8 B- F5 W( g7 r
默认的情况下就是你说的这样。2 q# O  L9 n/ l4 I& ?% \
之前的测试文件还在吧?
* V9 l- ?: s& ^  x* {. _, N! P0 X输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。8 k" E/ t% ~$ a% C+ o! w
单击这儿的数字,会自动跳到垂直 位置% m0 p7 S0 u5 a
单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52" A! l! i# Y! H, L) g
这样方式如何* V- H8 k6 p$ B9 V6 K2 D6 V9 q) T. C

9 |! t: @) f% {+ y; t开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

' S1 W5 |& Z' h; ~) N最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31. W2 b/ D+ g5 f3 X% _' z( Q
这个可以测试吗?

9 ^9 y/ w- a4 n3 z  t用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00
- j1 n9 H- Y! T+ t; `$ z. q* B, \最初加载的words列表如果也有极少的缺词可以手工加入吗?
) c) N% p# Y7 b$ E& b
要等更新
( M/ r8 O) U0 [- W' p* W用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
+ x5 G5 q" y# Y/ J8 ~用法如上所述

- F) l) k# U4 F( @. \7 l5 q/ @万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58: y& @7 D2 ^% F' @' O+ Z
默认的情况下就是你说的这样。, S  }; L" r7 r: n
之前的测试文件还在吧?
5 |  ?' _6 }2 b# d输入YHCD_001,你会看到完整的该页词头索引,按 ...

3 \% f. ?% Y9 b/ h- K0 r等你实际做几页,看看效果如何
) N5 W  v8 ]: |6 _0 p
8 U7 M9 u* x, f2 D: F8 q- h+ L

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
( J' e) o9 j3 u2 N用法如上所述
- z2 Z, [* k; }" Q5 E* W
打开的图片文件名是否可以写入?; i( ]! M% M; }& Y' s9 U0 S# I0 |/ h% E
这样方便后期编辑。
6 u9 c9 H) v  c, W----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27  D( b' ^3 h" E: d+ |
想法- f$ M7 u6 e4 K0 B5 W
a,b,c,d指向同一张图2 P5 Y  ], n- t+ p+ d
a词存图,设a为跳转目标,b,c,d指向a
' C7 G1 ^: R% _! W& J+ c
想法好!集成到程序自动完成就超级棒了。9 W! t2 p& _, M/ S1 ^1 k; N
不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。/ K2 m" K. c# [" Z6 w, D: c6 B: \7 i

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-5-24 01:14 , Processed in 0.055240 second(s), 6 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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