掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新
6 D! h; b) N# c; P/ A9 {9 k/ J( }- e& S' k/ z' u( T. X; \4 `
>套索功能
* ~, L( X7 ~7 F. _5 o$ E9 a; M/ Q' s8 ~+ r1 u
修正在词条的下方有很大的空白
1 J/ t/ f( s8 w' w. |0 B4 D* |' V% V. L" b( j
线条再细些

该用户从未签到

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

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层
( H1 z4 {* j- ?* O2 d: V
9 z* `5 x& F( ]! J
解压ZIP:
) U9 C4 b. X$ n! p; A3 Q
! T1 |% o9 q3 R# z# E* }3 U' BTEST.html 可以用浏览器查看一下效果, x, Z3 Z- Z! I# x9 L5 g+ L9 \
TEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!  Q# u! B2 L/ V8 E' t( E
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39
" G6 U0 E# v! r8 E7 Q/ I8 x# @单纯给出坐标% y9 G4 }# h) }/ A+ A
比如- R7 ^% e/ u4 C5 V
offering#20,400

4 A2 A) l. f1 ~( y' l# G/ n我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
9 P  A: I# R4 Z- [" L2 \6 a+ lmargin-top = 纵坐标百分比%
3 n( i: ]4 J4 i6 W4 E; l------------------------) P* B0 R5 n. D$ _/ a0 h# p# I# b- h
注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python- N7 ]! W: p  z: }6 S  K
  2. # -*- coding: utf-8 -*-- h% d/ w4 A! _4 i, ?
  3. from Tkinter import *
      c9 D3 j* o# Q
  4. from tkFileDialog import askopenfilename
    5 X+ |1 X! V# M/ z8 y! G8 O
  5. from PIL import Image, ImageTk8 `8 ~" c3 N) x, L' h2 i! J
  6. * D( u' S3 P% o3 z
  7. if __name__ == "__main__":
    ( c; d( ^1 U) k8 d) q
  8.     root = Tk()# g8 n5 z% {( b, A( R! l8 [
  9.     #setting up a tkinter canvas with scrollbars
    % G- H/ k/ {1 G$ k* E: O
  10.     frame = Frame(root, bd=2, relief=SUNKEN)% g* O# \- ]8 }0 J
  11.     frame.grid_rowconfigure(0, weight=1)
    + @0 p7 z# Z2 z: P8 C. Q! _" p( H+ ~: C
  12.     frame.grid_columnconfigure(0, weight=1)) m' j- F' q8 ]$ M- q: o
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)6 P1 W' ]% ^+ ]: b+ }
  14.     xscroll.grid(row=1, column=0, sticky=E+W)/ }% _  e, {6 n
  15.     yscroll = Scrollbar(frame)
    ' I9 q7 f0 l8 u$ S9 ~
  16.     yscroll.grid(row=0, column=1, sticky=N+S)1 g  ~$ a& t6 _- C& m, U% x
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)! L/ Y! m: \  h! l- g' F
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W): }: b$ \! e8 A+ Q0 s7 {
  19.     xscroll.config(command=canvas.xview)
    " A, Z1 k$ n* S+ i7 @- q1 C8 ^/ [/ {7 E
  20.     yscroll.config(command=canvas.yview)) ]% Z' p2 \9 ?. l. {" Y, D* M
  21.     frame.pack(fill=BOTH,expand=1)
    3 T$ A- c& [" i/ v* @0 V

  22.   n% P; Q' i) m5 M. \0 d. o+ _8 W2 Y
  23.     #adding the image9 W* ]) F* ?, M5 m) Y. w* w: Y
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')
      V0 H* R+ ^0 P( Y' @
  25.     img = ImageTk.PhotoImage(Image.open(File))
    4 w" e! i% C+ g
  26.     canvas.create_image(0,0,image=img,anchor="nw")
    ; A+ M! P, v8 X: _4 h
  27.     canvas.config(scrollregion=canvas.bbox(ALL))& i; P+ A2 X1 j% w1 v& `

  28. / k: G0 X6 y1 T5 u: D" C) d' g
  29.     #function to be called when mouse is clicked
    3 h! G3 Q! f, [! X
  30.     def printcoords(event):4 R: r$ s4 a8 z  U: B" {% x1 P
  31.         #outputting x and y coords to console
    ) M( i4 R. u* b- g1 C1 a( O
  32.         canvas = event.widget8 d" a+ d: r# f. C5 b% Q
  33.         x = canvas.canvasx(event.x)- C. V+ m! b4 ^. \
  34.         y = canvas.canvasy(event.y)2 u% B! y8 N3 q
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")" g) f* u1 {9 E6 O: b6 R5 \2 y
  36.         print x,y' `  X- {, P/ [+ R+ N/ R/ l
  37.         f = open('_coords.txt','a')2 s! z- S# _2 L* V3 o7 C" G
  38.         f.write('X: %s\tY: %s\n' % (x,y))- `# \: `& R9 k
  39.         f.close()
    ( O# u/ V6 {) r* r1 A! d

  40. : Q5 C0 B- j6 w+ |. l/ E
  41.     #mouseclick event3 Q; u, n, N4 G% i( t. y) k  g, d9 }
  42.     canvas.bind("<Button 1>",printcoords)
    - X8 u+ t! e9 N5 f7 y) v
  43.     root.mainloop()7 N& L: ]" Z% V0 N/ n, q  c0 Q6 {
复制代码

" ^4 D$ e+ g- y  {8 X0 u5 b0 @# ?) A) N; A  `6 I
来源处:
- x$ c. {" o. ~+ ^+ Rhttp://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:52
# N8 ^4 K& g1 T. }解压ZIP:; m, ^) t( D( Y9 ^5 i  b

% ]; R2 ?$ H0 ?6 r8 ~2 ~2 g! ITEST.html 可以用浏览器查看一下效果
/ `: k3 G2 P  ]! c
基本了解
* b3 {( K& M: R# kcss position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑 5 W0 L; v, ~9 F- g+ f6 N
chigre3 发表于 2016-5-22 00:58
( C. b9 U2 @  s) G6 _纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
7 S. E3 Q3 L' A1 S2 J! cmargin-top = 纵坐标百分比%( k* p+ t2 J. |4 H, y
------------- ...
' S; W# h0 |4 W. @( K: i9 [* E

9 z% f0 w  H5 x, A8 j8 X) ^5 l8 {3200x5000+ y& ?% ?# v5 ]
y=25002 o+ R$ C2 X+ }* @
margin-top=2500/3200*100=78.12%
( K$ m# O- E# L( @3 ^# M& |
" L" j( H1 `, Y' X* U4 I不知道如何理解这78.12%?
8 c4 f7 q5 h8 B% Z0 T* z2 U9 W
$ k" d  |* b! R+ `# D0 ?( J( r! P# x
margin-left的算法?7 G' w4 {5 ~! g4 u
' e  M" v2 _3 O. c

- B  N3 l' Y8 R+ w1 ?/ M% {

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确
! h* c! j3 X' x/ p/ c8 ]比如两栏的词典:1 \$ Z) Z" _/ |9 n0 j9 p0 O& w
1)输入分栏的三条竖线位置,估计只有个别页面需要调整1 ^1 r1 E1 ^, d
2)只需手工画出词与词之间的分割横线。
/ a4 Z2 O2 T; ?$ N* ?" C' u再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
! l' p6 q/ W7 a$ Q" K+ p3)每章划分词条完毕,一次性切割图形) u6 p& M4 i- L4 y

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 8 t# y. A7 Z& E6 I6 L( y
vbnet 发表于 2016-5-21 23:02+ _4 }$ L/ _* `9 L9 X
>固定框无法向图片下方移动。
. `% }7 w, @7 ~* x) W9 Q  Z
7 k& X0 t. j' c& [5 y
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。
& u: `4 e9 o3 O/ O, L3 s  A

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:050 R# h* K6 [4 F  ^; O0 k
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...

0 R1 ?3 M* W, n" z; U" I& K$ l改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新
$ g% _9 b5 |1 w! V% H3 F) w$ h7 B" s5 O* h& [6 X# I3 @
>固定框功能8 ]$ w0 R: W1 ^& l3 x# j0 \

  k5 b+ {9 Z# @# ]修正卷轴下拉后,不能往下拖动的情况
) F' K  a* k, g, S9 n( N
) r: `/ W7 \9 ?( k+ L$ T0 d

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
' ?- E6 U; y4 l) t0 n7 s. i
chigre3 发表于 2016-5-21 07:29* |2 U, T! R$ \) }; N; b# K
vbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。

" {$ j  g, ]# k& I% z" T6 B
5 N! C$ H6 ^  O) T# O( Q4 Z这样方式如何/ R& b8 X: g: P' [
6 Z0 ]) v4 @6 u. }3 k9 X' G# P
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方
1 u( M; n5 H6 \) ?* s/ ~$ s7 F7 n* ^1 x) \, `  h/ ^
点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮9 n, X" J* I7 _
往后只点图片
: J+ |' f, s% y% `+ V) M+ u
! l& F, r2 B) j  R# C# o( p: n, N+ P/ P4 y1 k0 P5 ?: Y3 Z
还是加入公式算出%?9 n( C4 h% v' N2 [& h' M9 a

+ B3 i1 q3 }! K8 r: b% [5 H7 z5 u, N% K8 ?9 a8 L( G& a7 G
) U/ A0 J0 W; P
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?% A  h( s+ E9 G/ r; r
; S5 R: m- D, l( ^' r& y4 }
: o$ E, h; r5 q* G! z" m

4 O' M  b4 x7 E  k4 R如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41/ l' f" V8 Y6 ~' R0 Y* A5 _, I, U
2016022更新
$ L7 z0 Y; }5 [% |; |: c& L- c
) O" Z( @4 E  G. q2 V' I4 r  J>固定框功能
6 ?) C( T0 S7 d7 p
完全正常了,效率好高,大赞赞赞赞!!!
$ q: Q( c; S& D1 f( u期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:527 T9 J- b% }) W$ f( s. @  K$ }
这样方式如何
4 B( H3 p. m, \! Z/ k) e$ k2 c4 E5 ?! }
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

) I; q5 L3 M# Q, X6 t8 }! z; z$ `整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
) }0 m6 J9 S4 Y( ]完全正常了,效率好高,大赞赞赞赞!!!
" m; Q1 ^7 S: I; q4 o) B期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

' y! J8 y5 T- y想法
) _4 ?( K2 u9 R$ B1 B6 p/ q; q1 Da,b,c,d指向同一张图
2 {  F1 d4 q& p7 M5 b+ Oa词存图,设a为跳转目标,b,c,d指向a" ]& s" L  V( `) r
------产生对照表---------------
" A; u% V5 U) _% S4 o7 z- db#a
# x& W+ L: C- {' n+ Mc#a2 g* B/ Y* F  M4 L1 L; ~4 b& j! p
d#a1 m! \- v7 I" u" _( H3 U" N
--------------------------------------------------------
7 Y% l9 h5 b$ [! t; H8 [寻找:
) m0 \" O8 L6 L& H(^.*)#(.*$)7 x! P2 k& Z- y  n9 |
取代为:4 f4 `) G: }$ r1 J, n, z$ |
\1\r\n@@@LINK=\2\r\n</>9 A9 `' N/ I3 O: ^
-------------------------------1 E# y! |  z6 Q0 h
b
7 x+ K! ~+ W1 f- S. T5 c5 r@@@LINK=a1 T* @, q8 _5 [8 y" Y, i" |
</>
" F& y$ c6 E6 o+ `c
$ t/ A2 _2 S. T0 c/ T6 H: j4 v@@@LINK=a/ z( N2 S# ~, N2 [2 X5 x0 x
</>% i* }. k6 X: {( ^+ _
d1 m5 D! O3 D) @
@@@LINK=a5 o' d9 Q$ D+ d, |# ]
</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:526 R* k' P; t( y5 Y6 I" Q5 v; ^7 K
这样方式如何
" F( @7 t! g2 [
! r0 Y+ t: l5 Q# K+ U: q开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

+ V) O$ C; P* P* g这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52+ C+ i+ X' V: q- w
这样方式如何9 O7 g  {6 E" o9 O

9 k0 S6 l/ d- ~开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

3 L8 g/ V  W# j& `3 Y' V默认的情况下就是你说的这样。
1 O; u* ^/ s3 F% C/ D. R" i& u4 E之前的测试文件还在吧?3 L% m: _4 ?# c( G: D" J
输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。2 Z) ]5 v, `2 x
单击这儿的数字,会自动跳到垂直 位置
: j, [$ Q; q. E单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
$ g0 O- |1 V8 x" R" p这样方式如何0 j# Q( t. |& Q& o: C5 Z  @

  H6 E9 e7 s" y* X: k开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
5 s& n! Z  _" p
最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:312 ~8 t. K! l5 [4 ^# o/ T( N
这个可以测试吗?
. [' C4 k+ l! A! z7 e- G
用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:006 K0 A" h0 K" U
最初加载的words列表如果也有极少的缺词可以手工加入吗?

7 o! |) |3 V& c- N要等更新
. [8 i) j7 H* {! [* I7 N用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11+ A8 r3 U) y8 Z) e/ z
用法如上所述
# H& E4 _4 y# T( m1 m5 S1 e
万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:588 ?* w8 w$ T1 S2 X
默认的情况下就是你说的这样。2 b; X3 h( e4 k! C5 P( g0 L
之前的测试文件还在吧?
' }4 `2 a: e. |: H: I# k) @9 m输入YHCD_001,你会看到完整的该页词头索引,按 ...

1 _5 {; e2 P6 R7 S! N7 z$ W等你实际做几页,看看效果如何
, G! U0 I3 O: P- d. W6 Y4 {5 K# }1 Q: r" _8 F

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:119 g6 |& P: C+ ]
用法如上所述
1 [, E1 d5 |8 E& d( Z
打开的图片文件名是否可以写入?
  x! W8 @" L$ ^6 I& d- k这样方便后期编辑。
7 ^0 d1 i" F7 H5 D5 K----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27
2 x1 t8 z  o1 U1 G9 a% c0 b, [1 z想法
  P% x- i) X$ X& o1 [! a& F6 ka,b,c,d指向同一张图
& P6 ]& d, j+ Y. w( fa词存图,设a为跳转目标,b,c,d指向a

" W7 Y) {% _; r8 n想法好!集成到程序自动完成就超级棒了。
) w% T; B% R+ ~+ N不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。
) D8 N0 ]/ f9 V% k  @

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-6-7 08:02 , Processed in 0.049261 second(s), 6 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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