掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新! u7 g0 A4 d- `; x/ w

; _: n2 M$ V. H4 R4 |3 I8 Q>套索功能
9 V+ F6 P' [! K; y; t( ^6 j$ C/ Q: u
: y' ~$ W# P; a8 Y0 ~  }修正在词条的下方有很大的空白' {* v( ~0 a! F* T2 I  u
0 u- a6 b/ b7 E& j# A# ^& h
线条再细些

该用户从未签到

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

该用户从未签到

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

* M: y* e4 j8 J/ e8 \3 h( Q' H
0 b1 w7 E4 x7 O7 L( h解压ZIP:* I% n; ]& J, W! N  Y8 p' y
- @2 U  B" L2 {- m7 E2 F. m& o$ r
TEST.html 可以用浏览器查看一下效果
* l% P5 U+ |4 D, eTEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!' O8 ~6 e$ s5 Y% g7 L, U3 F
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39% W  y! l1 a+ b8 d  A
单纯给出坐标
# T) _6 v& G. K比如" W7 N5 S( p. R5 S5 p' h
offering#20,400

9 B! e8 @  D  [/ Q2 V+ M我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )/ H! ?6 w# E7 c1 O
margin-top = 纵坐标百分比%
% X0 e# w# O& ~------------------------
1 a* V+ c, S% A注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python* r, K+ [* W! Y* {
  2. # -*- coding: utf-8 -*-, E" }' M2 o: f  W  x, A
  3. from Tkinter import *; ~6 [- @/ \4 \( b
  4. from tkFileDialog import askopenfilename
    - n7 a% k# k* S) M$ p3 B- m
  5. from PIL import Image, ImageTk
    6 r7 ~% I: O5 R5 E6 i

  6. % z8 g3 z5 j0 d6 T; V
  7. if __name__ == "__main__":3 p. `4 T7 U7 H3 ]$ @& }6 I
  8.     root = Tk()
    ; z% E+ p6 a/ E$ F( v
  9.     #setting up a tkinter canvas with scrollbars& x) N. V' S' p
  10.     frame = Frame(root, bd=2, relief=SUNKEN)
    8 o: e  G3 ^" f, ~' v
  11.     frame.grid_rowconfigure(0, weight=1)
    " {8 ]2 k  t+ X9 K# t6 g
  12.     frame.grid_columnconfigure(0, weight=1)! N. v6 o1 \" ?+ A
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)
    # D: {3 T6 p" T, O. b( g
  14.     xscroll.grid(row=1, column=0, sticky=E+W)
    9 f2 ?/ n9 V; W: ~$ W( s0 v7 P5 g* H
  15.     yscroll = Scrollbar(frame)( f. D$ ?$ U7 I. i2 V% Z, j
  16.     yscroll.grid(row=0, column=1, sticky=N+S)
    6 m, X* y2 t, ~! u0 _
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set), f. @" f+ U. o8 S3 v* \
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)2 Q) G* G" w% G5 O5 Q7 V
  19.     xscroll.config(command=canvas.xview)
    0 O5 ]: c" T& j6 ?8 m
  20.     yscroll.config(command=canvas.yview)- o- N$ f$ j% T. a/ |/ t
  21.     frame.pack(fill=BOTH,expand=1): U) k1 L+ t  E* ^; M/ ?

  22. # g5 I3 `6 y% f( z
  23.     #adding the image8 M& q( _) I7 t* Z, j2 M: J0 _9 y
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')
    : U7 y) A$ z! P' ~: Q  F
  25.     img = ImageTk.PhotoImage(Image.open(File))
    # g) c& W5 ^: }4 c1 ?/ U
  26.     canvas.create_image(0,0,image=img,anchor="nw")3 K: n, k2 D0 _9 n4 s: \. X" X. F
  27.     canvas.config(scrollregion=canvas.bbox(ALL))! t. w6 E/ K# K1 ^1 K7 `7 ]

  28. 9 J/ D% m# A& e
  29.     #function to be called when mouse is clicked
    # c3 `+ f8 d+ W# m: {$ m8 R) n' [
  30.     def printcoords(event):4 y* U! _* z$ q9 n3 Z* I
  31.         #outputting x and y coords to console* }  p  c$ C1 g2 A% ]7 ~$ `  h% `
  32.         canvas = event.widget
    % Y. F: ]1 `+ ^9 W: `7 s$ x
  33.         x = canvas.canvasx(event.x)( \6 }; U, S: S. J/ R+ t  m
  34.         y = canvas.canvasy(event.y)
    * S/ t/ i  c  o. B7 D2 u+ `
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")/ H1 n+ S1 P- K
  36.         print x,y- q" P0 B. D+ h
  37.         f = open('_coords.txt','a'): z: Z3 S& K( R, x6 Q# l/ D
  38.         f.write('X: %s\tY: %s\n' % (x,y))
    3 N" K+ Y/ }4 |4 T0 A9 _
  39.         f.close()/ A; m3 Z5 p: t4 r* S

  40. ) S8 n, q6 z& q* P
  41.     #mouseclick event/ _/ \( y/ f; X; }+ x3 I" g. I
  42.     canvas.bind("<Button 1>",printcoords)
    6 Q4 R1 G& x8 K& Y( A% W% I: K, P
  43.     root.mainloop()
    " c/ W5 M; w  G: Q  }+ u1 g( o3 U) @
复制代码

- O# S  ?; z3 P2 S& N. T3 J, J/ \% A8 i
来源处:
  N4 b6 {, f$ h6 m* A* Ahttp://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:522 S' X$ x5 ^2 S- D
解压ZIP:6 W" |0 e" e) @

4 ^4 S9 K' E- jTEST.html 可以用浏览器查看一下效果

3 V: \9 [! X7 O; k) D: f基本了解
$ W4 P4 V5 E* l) ?0 Ncss position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑
6 @- s: P! Y% J# v- g- ~
chigre3 发表于 2016-5-22 00:58+ h& g. w7 v* u# h5 `
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
/ J% ~7 o6 \+ X' b3 \margin-top = 纵坐标百分比%& n2 i8 c5 ]. V: E6 N
------------- ...

8 T* w( L+ i1 N( G+ @. r9 g" n; @* ^: ^% b2 [1 }
3200x5000: c" k) F; M# T8 e% \/ `
y=2500
6 y$ L+ T. r; n4 Q- _! jmargin-top=2500/3200*100=78.12%/ g% |! D6 ~6 B- J

7 b# M$ N; k( Q  V" T6 K1 Q不知道如何理解这78.12%?
1 P, ^/ |- h: i: _9 t; c5 D5 {( m( _. I: U0 M! v, t# ~( ^2 V
+ g# f% y5 S; {0 E
margin-left的算法?+ K4 J4 _: n. b0 j9 M, v
+ B9 Y- _7 K; c* c: Q

- S4 H1 b4 L9 A" M) h. d

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确
! ?; u: v0 s, i- s  H9 w比如两栏的词典:7 c+ T$ u6 S/ w
1)输入分栏的三条竖线位置,估计只有个别页面需要调整
" s' W3 h. p5 K2)只需手工画出词与词之间的分割横线。9 U" C0 B5 [+ e: h
再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
& {" f- l# @- O  c5 {4 O* Y3)每章划分词条完毕,一次性切割图形
# l! E9 U- j& r4 G; |

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 * ~8 C* x' V' P" Y0 c
vbnet 发表于 2016-5-21 23:02
* @: R& w1 b; ]4 H! a4 z5 g6 J3 V>固定框无法向图片下方移动。

, E# l7 c8 I- J9 o$ W4 |& s+ ?: ]: j9 p, f% ~- i7 k
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。
4 f" d' C; _2 L& U3 \9 R; [  Z/ @

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05( a% @) z% N4 k8 @# |+ G( e
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...
# c% ^4 Q1 e' Y7 F; ?
改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新
8 I" |# G! R% Y" |; f- P6 }( i5 B$ \
>固定框功能0 z5 n# g7 z- N

+ l: [: [2 \: s/ }' {  I修正卷轴下拉后,不能往下拖动的情况- }. s% r& w% j$ u$ k6 a

/ R, |  b5 y8 p1 v; D

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑 ) x+ i' j( d. {0 G/ _4 d
chigre3 发表于 2016-5-21 07:29
* G7 I) [% F3 K) }8 t8 v; a1 h7 @vbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。

1 U" a8 d3 b1 x( j7 d7 i7 a% ~, @5 {9 ]0 _3 A
这样方式如何
9 }+ w8 D; Q. k8 S9 j9 Q# m8 V0 P/ p" s7 L: Y
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方
) A* c3 P9 r9 \8 t# R2 v/ ]3 I
' @1 W! W, ^: t& w8 \3 _点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮7 r8 ?% y) H% Q4 U# H1 }/ F7 A( k" K) o
往后只点图片
3 b: e3 \( u8 w& A
2 w: r/ N+ g9 u9 k; q
7 i8 a7 |9 _: A& i还是加入公式算出%?# {& o) B, g1 h8 Y/ R

5 G& D3 G3 P$ y, w+ w
3 _7 K3 u. t+ v& \8 V8 C& v' s/ o. v/ n- f
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?! B8 h$ I  X; i6 m8 Q

8 ^' g- P% V1 M( O- ]; F
9 f% H4 x, H3 v! B, @" w/ H4 X! }; u- f9 R* @* a2 p* @+ ?
如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:411 l7 n5 o5 A8 j0 O" B, I. Z
2016022更新
2 }$ u; e) G; U  k& ^8 t
5 `0 Z4 p& ^/ i>固定框功能

5 m7 J* U" ~# h5 k3 |* C完全正常了,效率好高,大赞赞赞赞!!!
, I" R% J# L- J期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52" x9 D$ ]' N) w; Z/ x0 G
这样方式如何0 O. ?: A6 ]+ k+ E7 d2 p

3 L+ A& Z) ?0 y, p) I/ {. @开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

: F0 l$ T6 U& H$ i  S2 f+ Q- i8 r. \整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:384 w/ k( P& T+ B* N( b# J
完全正常了,效率好高,大赞赞赞赞!!!- b: b' t: N4 P: R' P2 }
期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

; M6 i0 v5 ^0 X: U( }想法
5 @; j0 a# X  b  h2 I! t! V* Fa,b,c,d指向同一张图0 v( x- K3 F0 Z2 V
a词存图,设a为跳转目标,b,c,d指向a
# A3 i0 ]; h& D7 z------产生对照表---------------, v* m. S" j2 @/ U1 i3 a
b#a( u, i' y- r9 l3 U; Y  a
c#a
4 M5 T7 g. a3 i1 [d#a
, u. ~! x/ ?  a# K0 M1 H, a--------------------------------------------------------' G% L& y4 ]% s6 F0 `  j
寻找:
/ _3 M! `+ k0 i' w/ x. R4 c- X: A(^.*)#(.*$)/ a9 u* S" _9 v) m
取代为:
: V# D% K; x9 v' `9 G3 Z\1\r\n@@@LINK=\2\r\n</>
$ }" |. }. ]3 o# `7 R, {: h0 n* q-------------------------------. b  x; V' ~( s- k" N7 A* \
b
. v) g# W( g# N2 ~+ z  g@@@LINK=a
; C) j, t$ x9 h& [+ s</>- e# _6 G6 a# K/ V+ ^
c
, J4 F$ m, k$ i8 T9 R+ a9 A0 G0 u, I@@@LINK=a
7 m! f# k3 I! |4 i</>3 }$ y- _2 O8 A
d
, S- b, L9 d9 @7 Z! b7 \@@@LINK=a2 v$ b) t7 R% K. g2 Q# E
</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52( V: _! R0 k$ i' O
这样方式如何. ^3 Q3 H' c8 [3 j3 I2 A
4 F8 T" b  y& b0 n; l" h6 J) b
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

. ]# N; _7 }# u" y1 l, W这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:521 A7 q* Q0 y# w  w* T' i
这样方式如何
" |& W6 |( |2 _1 [
( T3 I; L  M! t7 T* P! |开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
/ y$ v7 F* _) l  u6 P
默认的情况下就是你说的这样。' l* T: B% `: V  V5 n: S( F! T% M' S
之前的测试文件还在吧?
, L$ {  W9 t9 O. W5 o4 x( s9 ~, m输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。
  h8 v; v; A- o6 X单击这儿的数字,会自动跳到垂直 位置
& [3 k# k- ~7 k) O6 J* \/ G单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
& N& W* Q$ h9 X4 J6 B  E7 d这样方式如何) y) @, ]; G) \6 S2 O
  z1 L! L9 j% V: |5 x4 T
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

$ s; S! a5 b3 f& n( {最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31% v( y/ l$ j$ j# e$ t7 ^
这个可以测试吗?

5 t& ^! R3 b  [8 F3 E用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:000 D. P% k+ I$ i/ O
最初加载的words列表如果也有极少的缺词可以手工加入吗?
  H: ~, U2 o( t, B$ e  K& d
要等更新& ]/ |! W0 m: k; m" P# a( H
用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11" N+ F( b7 I, u
用法如上所述
( v" U4 c: ~! g; A' E5 s
万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58
5 J0 E4 M1 B  g+ |# e( w! P5 @3 ?默认的情况下就是你说的这样。' e, j; w# Q# z7 A
之前的测试文件还在吧?
* V9 A# v) Z3 X5 b3 t输入YHCD_001,你会看到完整的该页词头索引,按 ...
. X- `9 Q9 u1 ^) ~3 \# O: i: n
等你实际做几页,看看效果如何
8 }  F+ C. v0 l& k9 U4 ^1 ]: O- z7 o

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
: T0 E8 v% u  {) N5 h. d% E+ x用法如上所述

) N8 o5 X; [  \& X0 a; _4 Z! U打开的图片文件名是否可以写入?) f8 M7 P. l/ Y1 r% N5 W
这样方便后期编辑。, A8 q3 Q: `6 b/ Y
----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27
0 e' l% x+ H5 z0 ^- ~, X8 H想法) q) T/ k& D8 S+ L
a,b,c,d指向同一张图; t9 k- N/ o) x/ G. c' a
a词存图,设a为跳转目标,b,c,d指向a

1 f% L& I4 J" t想法好!集成到程序自动完成就超级棒了。* N# Q7 s3 W( m0 v
不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。& H) @! {& d/ D6 k, |

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-6-27 14:34 , Processed in 0.022608 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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