掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新
: v% K, N+ u3 o* f1 c* D# s; o  ~, l/ t
>套索功能
$ Q7 [, Z2 U9 T9 |5 X5 r7 r0 z7 B+ C% ~* x# p
修正在词条的下方有很大的空白0 N+ y) F* I: c$ b; l
5 f( S: ~4 ^2 @. F+ G& `8 A! L
线条再细些

该用户从未签到

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

该用户从未签到

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

& m& a+ Z& d+ {8 M* O- _9 v1 F) |" f% q
解压ZIP:
* {8 b/ `  ?+ W$ Q4 K2 l0 ]6 e9 D  `  m4 t- J% J9 V0 ?! I( b" h
TEST.html 可以用浏览器查看一下效果
5 x( k( j8 n& VTEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!* [2 P6 @' V' v5 ~
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39; S+ |0 @! M. }- F, J
单纯给出坐标
0 ^$ O9 f/ p. B比如
5 R; ^& e# w/ f7 c; [6 b) zoffering#20,400
) P8 i8 C& Z; z8 L3 @. k) G& e
我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
1 O* W1 O- B) p5 p6 c6 Vmargin-top = 纵坐标百分比%0 F2 M/ l5 j+ \& s1 m1 y& |/ B
------------------------
$ Q$ R+ ?' l; ~- K. O注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python
    $ @0 c6 z) @9 i) M' H# w' }
  2. # -*- coding: utf-8 -*-+ _3 Q$ h( K0 G8 E& R
  3. from Tkinter import *. {8 Q0 o- T+ x: z9 V
  4. from tkFileDialog import askopenfilename# _( r! o3 w& j1 B# W0 k
  5. from PIL import Image, ImageTk0 I% p2 D1 Y4 v1 }/ y; G

  6. & R1 I" ^8 y3 l- p* g) a
  7. if __name__ == "__main__":
    # P  f+ G3 G0 P0 e& v1 \' e7 p
  8.     root = Tk()! F0 ^8 G. I  ^& O, D* E( L8 P
  9.     #setting up a tkinter canvas with scrollbars" p/ J6 s$ }) g" L4 O5 @
  10.     frame = Frame(root, bd=2, relief=SUNKEN)4 G' F! t# v( t2 d' Z
  11.     frame.grid_rowconfigure(0, weight=1), U" z3 \8 |$ \% Z" S( \7 C
  12.     frame.grid_columnconfigure(0, weight=1)
    ) h" S9 a1 t/ ^* M
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)
    ! d  n. Q& e3 k" G. R, C4 G, \
  14.     xscroll.grid(row=1, column=0, sticky=E+W)
    7 \6 c: J3 n$ ^3 u. o# ~
  15.     yscroll = Scrollbar(frame)( b+ V8 V* b8 W; u
  16.     yscroll.grid(row=0, column=1, sticky=N+S)
    2 _$ B4 V3 I+ H" v3 l% I6 s- G" S
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
    . J# K5 X2 I8 a5 v
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
    ' _9 c" v% Q0 \. v
  19.     xscroll.config(command=canvas.xview)
    0 R7 q4 a/ ?' V) Q( T
  20.     yscroll.config(command=canvas.yview)
    0 ?( \0 w* \; K7 r+ E
  21.     frame.pack(fill=BOTH,expand=1)( t& s" P0 r/ h$ q1 N
  22. 9 s7 J9 ^1 C( n% K- h6 [
  23.     #adding the image7 |+ T! Y: y7 c( J
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')# p1 Y) e  B: y
  25.     img = ImageTk.PhotoImage(Image.open(File))
    4 Z9 W* X, @, M& m9 D& @
  26.     canvas.create_image(0,0,image=img,anchor="nw")
    4 `) X3 |0 W( Y2 g; D: H3 s
  27.     canvas.config(scrollregion=canvas.bbox(ALL))3 _! Y5 @8 q  G. v3 A
  28. 5 W8 _  ]( O# I, x
  29.     #function to be called when mouse is clicked8 y; [- A; X1 h6 m9 F8 s# L' P4 T' X
  30.     def printcoords(event):
    4 _+ g; A0 O" }4 W& ^& b, C8 \
  31.         #outputting x and y coords to console' S7 c. h4 [( B! F
  32.         canvas = event.widget# i4 V3 B  ?7 h* d2 ^$ Y$ W
  33.         x = canvas.canvasx(event.x)
      ?: [5 w# @; Y) Z/ j0 ]8 ~
  34.         y = canvas.canvasy(event.y)
    8 e4 h$ d: T( r: d) ~& |; S) u
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")
    8 @5 k% C; w: P5 H
  36.         print x,y% Y' v7 a& W9 ?7 o0 g7 I
  37.         f = open('_coords.txt','a')9 R9 L. i3 v+ U, q
  38.         f.write('X: %s\tY: %s\n' % (x,y))6 e. [  ]) C: F6 i! H
  39.         f.close(): G: x' A1 j2 J6 Q5 L; J; P1 Q

  40. ; ~5 c! l, y( k/ U: M
  41.     #mouseclick event
    0 P$ H3 e$ t' ^
  42.     canvas.bind("<Button 1>",printcoords)6 f* L! p4 {" i7 S" o- b' ^
  43.     root.mainloop()' Z6 b% J* N* @+ O4 \- @
复制代码
$ U0 a/ E: ~% k8 g8 u6 a* ?, W
0 `' }+ m6 _. z$ m
来源处:' p& @8 X2 T- X
http://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:529 p" N6 X/ K/ ]/ M0 {/ e9 `
解压ZIP:/ S4 z/ _* Q, H
1 b- R9 _' l2 X& G0 x: u
TEST.html 可以用浏览器查看一下效果

5 B/ k+ P* l& S8 U基本了解& _2 t% {& l( w' u2 T- i5 u6 p
css position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑 ' ^8 J! I( D. F$ U7 Q
chigre3 发表于 2016-5-22 00:58
, P* x& n8 Q! a. n! P纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
; f1 B7 E: _" ~2 e4 @0 Hmargin-top = 纵坐标百分比%
/ k+ @$ D9 Z' W& K$ b" d------------- ...
0 |1 T" p. R! l. f

# |, E; D% B- c/ q4 t( F: f3200x50003 V5 M% f2 z+ |/ `# P
y=2500
9 V/ }6 d4 m" _, ]2 Y( p$ M3 Cmargin-top=2500/3200*100=78.12%! U8 h6 [5 T% n; B2 b3 ^) }
+ d  }( R2 `) B$ H+ z) Y
不知道如何理解这78.12%?
1 {2 }# {2 W" V$ ?4 k" c6 {) X2 C$ y3 X& ^* U  c% @8 Q
5 L1 B& m2 ^/ N# q) r
margin-left的算法?7 C# d' k) [  v/ V* T' l' r6 Q
2 K: C' P1 a- E" ~* }

, W& X0 H( R- i8 z

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确
7 J6 V8 `0 ]5 I' ~6 M比如两栏的词典:
0 n" _5 G7 m8 [8 s9 {' {1 x1)输入分栏的三条竖线位置,估计只有个别页面需要调整; R( }( q# W! }! m& s. v0 [6 ?
2)只需手工画出词与词之间的分割横线。
1 \$ l2 p0 d% }  J- x# V, b再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
+ [' I2 d! d" J7 T6 A# g0 N1 C# P3)每章划分词条完毕,一次性切割图形! m# F0 v5 \; {% w2 N

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 6 S. R5 }2 A; I  J, t' ~  F
vbnet 发表于 2016-5-21 23:02# a8 U6 p' H7 \1 }  _2 V
>固定框无法向图片下方移动。

7 T2 t% A( ]' i$ m2 u5 j# y7 @3 n" y3 M8 n% V: P* S
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。
0 q! {3 y: K5 Y, \' ~9 ]- l1 ?( S

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05
/ `1 {9 n6 x( L7 V$ @* O# w5 t" g固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...

8 n! E0 ]: g. v改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新
, @: M& b" W9 p  h( F3 T8 X1 E8 P& F
>固定框功能
, i  `5 I8 d2 j! C6 F7 V4 G; P2 m
修正卷轴下拉后,不能往下拖动的情况( I1 m* V3 V3 ]8 i7 w

' x6 V  c* g1 p" C& m2 m

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑   J: U& t1 o* t% Q+ l
chigre3 发表于 2016-5-21 07:29
; o; U+ j) M$ I7 Uvbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。
3 j' p/ u1 [4 q$ ~2 \% {
. c7 B. l' D8 x$ r" m. ]
这样方式如何2 V& k2 d2 |- {- W0 |+ [* U
  Z( U# k( O7 M6 d/ Z  |
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方: l2 Z4 m) L7 A* e6 F) p, _

6 A) z  t4 i) k点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮
. A7 x4 F& x- K8 e* _2 y+ X. d* {往后只点图片
  r2 [5 m, O4 T  T
# f4 G$ E! u' G* I4 l8 F# [: p
2 T" y6 R6 D6 m还是加入公式算出%?  u/ m% o) I1 v4 |  I3 _- K

, w4 b5 G( s0 F4 r
6 X2 t: g. B; [$ G% t: q! c6 m! }1 F5 Y. h7 X& [
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?& e  C5 X4 [9 W9 L% A

- ?; Q+ @0 T9 K( Z: J8 W5 Z* Q0 X$ u4 ?0 ^3 t

+ n1 j7 F9 f6 L, S% C: r  b如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41- G# i4 f6 E4 c9 H
2016022更新+ ?) d3 b# Q6 E
7 i( b1 d) z9 w  h& a
>固定框功能
* Q  F9 @8 g% Z' O8 ?2 i
完全正常了,效率好高,大赞赞赞赞!!!7 S. _. H# L7 D" R/ O( E+ S/ T: Y
期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
) d: s  n# j% G4 N  o$ p1 k这样方式如何
" |: U4 \* u" h; e/ E* @
2 h2 P3 B5 s! R开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
7 I+ Q  Z& p1 H1 [
整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
# P- [4 x8 m1 A4 p2 |9 }1 [完全正常了,效率好高,大赞赞赞赞!!!$ V  I1 A  c5 Z5 d
期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...
, @5 ?+ J* Q+ ~5 G# A% Z& p
想法
5 j  n: J, V9 p" f" m$ X4 o6 ja,b,c,d指向同一张图/ U1 {; E) d! ?6 g0 u' k* p2 `
a词存图,设a为跳转目标,b,c,d指向a# _+ f6 f2 T$ T$ a# u; r% z' h
------产生对照表---------------
: ]/ a+ E. s9 z; Nb#a
+ Q. C3 `# g# ^% I0 D2 Ec#a
6 t! q  o9 _# F& i2 z) M8 Od#a
& o( m: P3 y) m* `! T--------------------------------------------------------' S4 ~/ h4 y) N' d5 }
寻找:( X& A1 R% |9 M5 J
(^.*)#(.*$)6 P6 W! q" `% r6 V& Z' ~4 g: ?" J# n- t
取代为:5 Z4 a. v- Z- h6 V: v% C% M4 K! b
\1\r\n@@@LINK=\2\r\n</>* d8 M* r8 J  Z' I  [' ?/ J
-------------------------------
) I; ~+ C9 z& V) Y5 Ib
: j1 l- K2 P8 n9 z- m@@@LINK=a
* e* `. j& D+ s( {: l& Z* [7 X/ |. E</>( ^# p: ]+ z2 G5 z) f
c9 z: H/ q5 _* i! Q9 `
@@@LINK=a
2 s7 ^3 Y6 M; z</>
; P# z5 {. W1 z: Pd  V% }" K3 U7 R+ [! W% T3 z+ D: K
@@@LINK=a/ U: T* t/ T+ I9 e; R
</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52- u  ?2 q0 u& X$ B3 B
这样方式如何
1 h! ?! U7 O* N: n& {+ m
6 V9 J' d$ _# m& W- R$ M开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

$ Q5 c' V  u* q6 L1 @3 x$ f; S, Z这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52: p7 a2 X/ J: P/ z3 m
这样方式如何
! O1 F8 g4 X/ _3 c- d. J! o" L* V+ z, ?1 Q* Z0 C
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

  Y7 @9 I# V! |! ~1 b9 g# o  z默认的情况下就是你说的这样。$ L/ @2 W- z, h4 g# H
之前的测试文件还在吧?
. T: N: H8 K" {# Z: W) n" I2 x输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。
' g# q6 X; w  i单击这儿的数字,会自动跳到垂直 位置4 A9 K) X/ T0 Y
单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52. T5 h) w# t0 \" }. {+ l/ K  @
这样方式如何; q& m  V* z, s! |3 K" e

) e7 Y- k' i/ t% g: U开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
0 l$ ]2 X) P- @: H" j3 `
最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31
' V2 L$ D8 L; K; }这个可以测试吗?
5 s$ j& o9 Z% X0 i6 _$ h
用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:000 d$ z: S( M: q/ p9 ~
最初加载的words列表如果也有极少的缺词可以手工加入吗?

7 |  E/ p  m% B+ J- a; `要等更新
% B9 A7 @8 p8 F: N7 B& K  L" p% N+ C/ |. E用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
# v8 e: |* Z& j6 r! ?用法如上所述
0 O. G+ N3 D4 d8 l  m+ L
万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:581 X/ S1 x) ~3 v0 N, |
默认的情况下就是你说的这样。
; a; Y5 i1 t0 s: J4 {, w  U之前的测试文件还在吧?
# x! w0 {  T) O/ ^. V6 T输入YHCD_001,你会看到完整的该页词头索引,按 ...

7 m) M; @* e0 ^+ \7 {, j等你实际做几页,看看效果如何
# J3 G5 ]( f7 @# t$ j" c2 b/ t- }- P4 C7 g; d; D2 |3 `

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:118 M( k8 a4 F! f% b' R/ J, m
用法如上所述

; h: ]6 t. W9 p* C6 H打开的图片文件名是否可以写入?
  D. ~6 c" P! _: i  B这样方便后期编辑。
8 j- K/ ~  [2 O. ~* y----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27
' ]( q) E- N+ L想法
) ]2 Z, {4 ?% i/ i! H. Ua,b,c,d指向同一张图* T* E9 E. \) g
a词存图,设a为跳转目标,b,c,d指向a
: W, `* t/ a5 D
想法好!集成到程序自动完成就超级棒了。) E" n3 O! S% B( J
不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。
" m$ D) m: `- o' v: U2 K1 G

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-6-7 07:56 , Processed in 0.054320 second(s), 6 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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