掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新0 ~8 s1 U1 y* z9 ?# L" Z$ P$ i( K

# m5 C* B6 l, ~9 G6 _0 ]* X, g3 x& n>套索功能6 L, r4 L1 K& t  W2 _6 N' \; i/ G

' ?; M* ?/ [- w3 ~4 `9 H* q修正在词条的下方有很大的空白
) Y/ R' J% l+ k+ z7 I: B
( L; P+ Y. T" U. E$ ]0 g线条再细些

该用户从未签到

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

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层

# ~' ^) n  h6 D2 S1 m+ U% d0 l
) Q2 U& V' [% r4 f; |3 g1 T解压ZIP:) i: L0 W% @; h' i. Z& {, H
4 E# G2 g  u4 V% \1 c2 A! F- y
TEST.html 可以用浏览器查看一下效果( d! @4 ?! x% E# ?5 H8 g
TEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!, T+ M+ J! {# u. F
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39
% F9 S2 u0 `  R9 R  P% u# T单纯给出坐标/ T2 f' c( c  t7 J3 [; b/ a6 \. a
比如
3 E# |) a' H4 U" L' w" m7 z$ h! soffering#20,400
" v4 R( `3 O; O0 d" m
我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )$ k( S9 Q8 R( T" z# J
margin-top = 纵坐标百分比%" K7 ]) l" ?3 g
------------------------
  r$ f, k9 }7 ~/ O9 j9 P# t6 X注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python) |5 u# N0 \. C
  2. # -*- coding: utf-8 -*-0 j  T/ ?9 A* w( M& R4 u, R
  3. from Tkinter import *" K+ H; D, Y0 u4 R
  4. from tkFileDialog import askopenfilename
    1 Z! `' `/ |8 O: q' x
  5. from PIL import Image, ImageTk
    ; ^* ~; f/ \, [) p$ f

  6. 6 y0 V" Z+ n' c( F) Y
  7. if __name__ == "__main__":
    & ?* E# R4 k! Z* d
  8.     root = Tk()
    / _1 I; m* P$ A" I
  9.     #setting up a tkinter canvas with scrollbars$ v( A7 _. p3 ~! _! s4 d
  10.     frame = Frame(root, bd=2, relief=SUNKEN)/ \6 [; J  `5 `2 J: I
  11.     frame.grid_rowconfigure(0, weight=1)
    ( a6 B/ X2 O" b2 x& S7 d( h
  12.     frame.grid_columnconfigure(0, weight=1)2 b! C# W- }! N% h
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)
    : K0 _1 ]* c. q3 C: W& h
  14.     xscroll.grid(row=1, column=0, sticky=E+W)
    % f' ~- A. ?1 G* x3 g( L0 [8 c
  15.     yscroll = Scrollbar(frame)
    8 |9 v: i4 J  K" t8 B2 |4 Y1 k) C# d& u% V
  16.     yscroll.grid(row=0, column=1, sticky=N+S)
    % W+ g- O( V" k  ]
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)" j4 d: Q4 e5 x- x, L
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
    ) L8 \5 l8 y- `
  19.     xscroll.config(command=canvas.xview)
    : J/ P/ B5 S% _' {, l2 R: ^
  20.     yscroll.config(command=canvas.yview)# Y1 i) i9 J7 \/ u7 C1 E
  21.     frame.pack(fill=BOTH,expand=1)# o3 e4 b* F5 p6 E9 p& o  v

  22. : g. S' x$ A- G  l, e2 H
  23.     #adding the image; h( ?- }- s6 _1 p) r8 c
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')
    / u; N  E8 _. r' H' v
  25.     img = ImageTk.PhotoImage(Image.open(File))
    - I5 s$ q6 T4 j
  26.     canvas.create_image(0,0,image=img,anchor="nw")" g6 X, y* |! N( y
  27.     canvas.config(scrollregion=canvas.bbox(ALL)). g- j( s: K. e4 c8 @6 {4 @0 J
  28. 4 p% z7 Q! \) S
  29.     #function to be called when mouse is clicked' W5 G$ L# ]) g% s+ ?: a4 t
  30.     def printcoords(event):
    7 y) ^4 {/ p9 P, [0 r
  31.         #outputting x and y coords to console
    7 q7 `, a" G4 H6 k, t
  32.         canvas = event.widget( a7 w5 e8 E6 v0 H: ?0 ~
  33.         x = canvas.canvasx(event.x)) L, W  ^" a; k/ Q
  34.         y = canvas.canvasy(event.y)& G- x# p1 c8 S* @& f  J+ O
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")2 F0 Q; `5 n6 g
  36.         print x,y
    ; o1 w$ L1 A/ @9 q9 ~; J
  37.         f = open('_coords.txt','a')
    , ~/ Y# n. h) |; D5 o
  38.         f.write('X: %s\tY: %s\n' % (x,y))- e+ N1 F: A1 ^1 b9 q, K/ ~
  39.         f.close()
    ! V) S" e# [4 f! T; [. @
  40. ( }& a$ i# J" b
  41.     #mouseclick event* T% u1 j/ @- R# U
  42.     canvas.bind("<Button 1>",printcoords). K- K4 ~" _3 P3 Z8 a
  43.     root.mainloop()
    & Q. Y: y4 V& [" Z! d. g7 ]5 c
复制代码
+ T' J; t9 h- g* ~

7 u7 Q6 \, [5 d来源处:
0 S! m' j# z# i5 b  o% u4 b( Chttp://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:526 a7 M; o% A( G" E' e
解压ZIP:& ^0 r' Y$ [- `# ~3 n
' d) s4 d- s6 h5 K/ Z( e
TEST.html 可以用浏览器查看一下效果
* U5 R, k0 M) L
基本了解! h4 t/ V! f4 H9 v7 |% a
css position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑
% S/ a8 z% p0 y! [# {1 h' s2 g4 m
chigre3 发表于 2016-5-22 00:58# d$ N/ u% r4 w2 a$ {1 r) g
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 ). K1 Y- I8 e( a
margin-top = 纵坐标百分比%5 t8 F0 @# T  q5 r$ Q- H7 e/ ~9 h) S
------------- ...
6 q' S/ S1 i, i9 q9 ^, J

7 W0 q8 T* I- l4 K3200x50006 B. j# [: p+ }
y=25009 h. ?" T- R9 Z5 y3 ^$ _
margin-top=2500/3200*100=78.12%
4 l6 }) n* Q  O$ I7 b- X
* Q. Z9 g% f, x( b不知道如何理解这78.12%?
3 O. H2 W- r; E: ^. q0 V% a+ K3 T4 a9 L$ a! \( q+ r5 q' X

8 H+ x) _) t  F# amargin-left的算法?
- Y1 P# z6 O$ k# J% Y8 m% |% W! b+ h  d( _  Y. @2 k$ C

" j/ n) V$ h! }7 \. v) G3 ^

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确( I- L1 u0 _# r1 P7 p- U$ a& `
比如两栏的词典:& {, B3 n  _4 U' O
1)输入分栏的三条竖线位置,估计只有个别页面需要调整' e) @& j+ B6 i) A& v6 O! f
2)只需手工画出词与词之间的分割横线。6 v: N' }( t: [4 G+ A# M& d( G3 `& P: R' H
再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
* j+ M( D' w9 g4 `6 I7 J3)每章划分词条完毕,一次性切割图形7 G6 p4 Q; _7 Z6 w

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 $ B; A1 H, x8 a( ^- h$ _8 d+ w+ w
vbnet 发表于 2016-5-21 23:02
' t) A. W; u2 v  J* q% o>固定框无法向图片下方移动。

+ j3 ^) j! {' V% F. b
; C+ K2 K$ v1 L/ q1 `固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。
1 Q) [8 o: W9 i& P) p/ x: ^

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05
! [" M' e/ e1 G7 O% D' L& e固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...

. `- k' M2 k9 x7 f改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新( y5 p5 a! E( U" Y. Q

3 [7 b, L: c' C: N6 M" e>固定框功能
$ v5 o4 j" R" M+ I/ ~( Q1 |1 t, ~3 V
修正卷轴下拉后,不能往下拖动的情况
3 r& c5 R4 V1 ?
- x$ k: }, m( `; ^  q

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
* Y. e" z. u. P$ L. ~% z
chigre3 发表于 2016-5-21 07:292 v3 k3 ~( ^. _4 g
vbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。

% x/ [/ ~% i/ t. f* K: S9 |$ z% s+ C$ r, F; H+ ^3 N" q2 O* C
这样方式如何
, x( |1 Z9 R; `# f, h0 E7 h# {; }, ^. K" U' |2 U! j& H
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方7 [7 t( g! I% Q4 T* [" b) Y9 o

% I3 ^6 \8 x% n5 R点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮0 m* ?; A" L: A" l8 B' w4 p
往后只点图片8 R" N+ @+ H; L9 @: `" z: O
6 C1 e5 Y1 t5 I
) d# }3 V: h# P
还是加入公式算出%?# h' r& s/ U, m& f: X

4 l, v! c' m2 s
- L; @' B8 b: V8 B5 ~- T! R3 P, o, Z5 I# o9 G* q9 z
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?* {* h% u& _6 C* r
) ^$ q5 p* L# D. N% A5 _* T
5 w5 U0 L: J4 \% y8 _

8 v' q( S& T* A- ~" \如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41: C3 p9 s2 v3 k  I/ B) c! F
2016022更新) q" `- V/ [& d/ z0 Y* i$ }% w% v

: k' {: c5 q/ r8 A. G7 }4 M- ?+ A3 |>固定框功能
2 j% h* Q" H' q8 p0 p" E
完全正常了,效率好高,大赞赞赞赞!!!4 B( \' b) Q1 T0 D4 ~# _% b; _7 x- r
期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52$ m" c# ^0 S& l
这样方式如何
2 o7 L$ s$ w4 s* b6 q% i  s) `+ V  S0 J6 o6 W! y
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

+ |3 s4 t' v- E# B/ P2 D1 {) @  s3 t整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
- T/ S5 J: }3 b0 w0 L- j2 H5 w3 C% t完全正常了,效率好高,大赞赞赞赞!!!8 |4 i% ]( h; e, P9 s
期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...
/ k6 S2 C' O$ H6 N, s5 K
想法6 z- b) L% m2 e; q
a,b,c,d指向同一张图
: h' f' J- l' ^3 ?9 ra词存图,设a为跳转目标,b,c,d指向a
& Z& I; a$ I8 L: y* v------产生对照表---------------4 W% C7 p/ w: C8 J5 k
b#a
2 F8 A& i! K7 _6 T% Q; ~5 B1 S, [c#a
# k7 L; A) T0 b* z; A5 \5 x* w8 j9 Rd#a
; J" [8 n* S) k! F4 f- L  N1 \--------------------------------------------------------
$ Q; ]: C) {& `" ?3 M* f寻找:) w8 @- \( A; u; c( Z6 f0 Q
(^.*)#(.*$)
6 @5 Q: }6 r4 y" w+ Y2 Z# G取代为:
( J6 d. X" |' |' X\1\r\n@@@LINK=\2\r\n</>
1 `9 O8 y) l/ n6 J# @. c/ ^5 k-------------------------------
! ~) d7 C. ^! O3 n0 M$ Zb! w7 z+ S" C- Z
@@@LINK=a
; ?" U- q- J9 b; i6 D</>3 @+ c. o6 v# `# F' x( q8 }
c
3 A" h; H4 j' Q% u" m' J, k! s3 d@@@LINK=a& [) S7 Y8 o$ X# |
</># K9 X5 I% J) w+ l7 l" P
d, |8 m9 p! N3 R3 [2 e  \8 f; g* W2 e
@@@LINK=a; L1 U7 C0 N0 `: J5 s
</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
. J! n; }6 s  f. u' {; {这样方式如何
- ~, ^' Y( @- l) Q* k6 ?
' c( D/ q+ Z0 S% R: ~' e开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

& f! c0 D4 g' V, G/ e; ?这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52  B  O6 e, v4 b: H; S' W* G
这样方式如何) t1 C) C/ Q) \, y6 x/ k/ V

3 u. I9 V1 C! e5 A开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

( A- ^6 L8 n  Q) p/ h0 `默认的情况下就是你说的这样。
* v( m8 ^' Y9 X3 o3 o4 i' M  A之前的测试文件还在吧?: G1 J* y. m# T- Q
输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。" s; n, }% `4 v. @; \- \+ g
单击这儿的数字,会自动跳到垂直 位置1 X/ N& v  k' ^; I4 F" {
单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52) y% U. U# \- D
这样方式如何
! X% a8 b1 k& o( T
5 N0 q1 G# h5 t开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
) B. r$ u( g2 Y1 @/ t
最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:316 c* A* E' G" M
这个可以测试吗?
( [7 `# F0 U9 q. C8 ^, y1 i6 j. t
用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00
* d0 b" R0 m" V* E最初加载的words列表如果也有极少的缺词可以手工加入吗?
6 H& q0 U2 s9 h, S7 p) B
要等更新) j4 _& f" u  A2 M
用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11/ l# M# z$ U: R/ z
用法如上所述

1 D" k/ `" ?4 `万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58  b; j( h- h9 v3 l
默认的情况下就是你说的这样。
6 T. c  p; ?) l6 W* |4 V之前的测试文件还在吧?
  t3 ]. I1 [8 x) e# B输入YHCD_001,你会看到完整的该页词头索引,按 ...
* X, ~- l2 M" e0 S' ~
等你实际做几页,看看效果如何
# e+ i/ e1 A7 p1 j- @4 k5 r# J* {# @) Z$ x: n- J6 ]8 A

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11$ E* g3 ~5 }' Z- m: m8 Y
用法如上所述
( a, M, [0 `0 `/ p+ J" ]# |
打开的图片文件名是否可以写入?; ]* Y4 j$ K" R, a; p
这样方便后期编辑。0 }( L" H: B( v9 T! Q$ m
----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:276 |& [4 a& V; {+ b$ @
想法% @& X+ S/ a" E8 ~& \
a,b,c,d指向同一张图
3 E0 D  Z; i# j: a; y( m% W$ N6 sa词存图,设a为跳转目标,b,c,d指向a

8 W8 \9 P$ m" X% p8 Q, T* v想法好!集成到程序自动完成就超级棒了。- M1 Y' \3 e7 X; |# V3 x, t, }
不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。, D# U4 z( x+ X2 k1 G, C# _

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2026-7-30 01:58 , Processed in 0.020727 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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