掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新
' O. Q* [# N1 R7 o! Q/ U1 N5 E$ I- X" i, w8 o
>套索功能
! P5 |9 b  c! p4 ~* P  _4 O+ \- n3 b; y; S+ p" Z' b% f5 `
修正在词条的下方有很大的空白9 l) n7 t8 O6 p8 R1 f( l2 f

* G7 ]9 T0 M7 O5 h8 U9 A2 L; |& y线条再细些

该用户从未签到

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

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层
; a+ N, ?* `8 R

* k; |* l  s) B) h1 A* j( C' B解压ZIP:/ X( h$ f, }/ ?: J6 y5 S
4 U, x( L% c8 ^3 k
TEST.html 可以用浏览器查看一下效果
# Q% _2 {7 y2 \TEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!
' c; k! z- W. ^: A  B# p$ ?) S不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39$ u, M' F$ S5 j( d7 F' d  w- i# A
单纯给出坐标4 o; X3 y5 a& f
比如3 @. y* G$ ^  o$ z
offering#20,400

6 ?. G" }5 b4 \; j5 K3 m我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
, ^/ I8 y% z( gmargin-top = 纵坐标百分比%3 g# ?/ D1 w  |% Y3 y
------------------------! O( h$ R+ t& A0 m! `. G3 [
注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python4 L) _3 ~; G- M. o/ w  M+ C
  2. # -*- coding: utf-8 -*-, z1 t( _2 h" ^; }
  3. from Tkinter import *6 V9 V1 |5 g0 t/ S! }3 [3 e7 J
  4. from tkFileDialog import askopenfilename
    ; y% ?, e+ @) ]: S
  5. from PIL import Image, ImageTk; _* Y1 {* \$ {7 S

  6. ( L# V+ q# l' m3 E8 o  t+ J8 \
  7. if __name__ == "__main__":8 _! ]8 `' \+ W7 y+ h
  8.     root = Tk(): e/ c9 w: @" v& w9 l7 S* p
  9.     #setting up a tkinter canvas with scrollbars
    0 S7 b" K6 U1 e& y" q% Y8 N- a
  10.     frame = Frame(root, bd=2, relief=SUNKEN)
    , m6 u$ P/ ?, \  j9 Z5 S2 r
  11.     frame.grid_rowconfigure(0, weight=1)0 s9 X4 ~8 x& g/ O3 @
  12.     frame.grid_columnconfigure(0, weight=1)
    + ~( o* G1 E! I% H( h& A
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)3 `' D6 V. _4 W: o2 S" V
  14.     xscroll.grid(row=1, column=0, sticky=E+W)
    1 F9 a6 e4 x! N# k" e/ Q- F
  15.     yscroll = Scrollbar(frame)
    1 E( i; I% u  b0 R; |9 o
  16.     yscroll.grid(row=0, column=1, sticky=N+S)( c  v) \7 j- g$ S5 l5 S4 L) y
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
    - d! q# w3 b+ ?
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
    5 z  k8 U$ _1 w7 E5 m) ]
  19.     xscroll.config(command=canvas.xview)
    ; f4 L# G+ s2 D- y  N" h
  20.     yscroll.config(command=canvas.yview)
    2 @" |4 [/ q- p) k! l' P
  21.     frame.pack(fill=BOTH,expand=1)
    $ k1 o4 G" u" L$ H- b$ ]: F

  22.   a. k$ {& ?6 s
  23.     #adding the image
    # E0 a  Z; r: o7 M8 T1 ^. Y
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')+ b5 z& G+ {0 v- X( _0 j4 |
  25.     img = ImageTk.PhotoImage(Image.open(File))9 P/ x1 {9 O( R6 K
  26.     canvas.create_image(0,0,image=img,anchor="nw")1 W4 y1 E, n5 m2 P+ \8 k9 S4 g
  27.     canvas.config(scrollregion=canvas.bbox(ALL))( J# b9 M* C* w5 l/ i

  28. 2 H% c- ^1 R& R9 w  k4 i
  29.     #function to be called when mouse is clicked- p& H2 G1 u5 W) u% }( C. B1 m! v
  30.     def printcoords(event):
    ) W! _# h9 r/ d: [4 c9 z
  31.         #outputting x and y coords to console  ~1 k6 B1 n* T. M! w% @
  32.         canvas = event.widget. v3 j9 d0 e" A3 H
  33.         x = canvas.canvasx(event.x)# Q$ l( m5 }! E& j9 L
  34.         y = canvas.canvasy(event.y)
    * a/ [* X% s7 w9 H% d! O' X( k$ l
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")4 Z9 Y! g- i% i7 n
  36.         print x,y5 @2 Y% C/ N. v- [* O, R
  37.         f = open('_coords.txt','a')
    2 O, I3 E$ l6 N- O3 S. [7 R4 ?
  38.         f.write('X: %s\tY: %s\n' % (x,y))
    * c( K  k/ B, n/ ?3 F
  39.         f.close()
    0 [7 j: o7 w! W

  40. 0 e' _$ k& q* H/ U
  41.     #mouseclick event
    . F9 g" p* ^( z3 O. ^
  42.     canvas.bind("<Button 1>",printcoords)- a8 ^3 H0 I8 B9 M3 Y1 B# F2 \
  43.     root.mainloop()
    # P! |% |7 c( u( T, [0 V7 T. ?1 K( V7 F
复制代码
, O) K+ s5 r+ e) e9 I

; u' b4 ?" v( H2 S6 N' P" ~! m9 c来源处:1 t" \9 ~$ }3 e7 {$ S$ p, v) ]
http://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:52
& o) O7 C  n/ H9 i+ Y2 C) p% \解压ZIP:( a! J( {  A$ r. d3 {" p. [/ D  p

; c9 g  Q+ |: q5 H4 }* RTEST.html 可以用浏览器查看一下效果

' H# S7 _$ M& O- [1 X- ]- \基本了解
4 O0 f: I- I! c$ i# Xcss position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑 * Y% K0 L2 ~4 g: W' K
chigre3 发表于 2016-5-22 00:58
+ P! ~7 r; {+ {纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )- D% M9 F  f: z8 w
margin-top = 纵坐标百分比%
4 @7 X" \% U1 a: {------------- ...
+ |: d) u9 ^* z2 f% V

8 X! P+ E' [; D3200x5000
; A# q6 f: h$ W0 o/ g+ ?& Oy=2500) i, l7 T; u8 d8 x. T( {0 a
margin-top=2500/3200*100=78.12%
6 e! g( m* G8 o5 }' X: u/ v% x) R1 r0 P4 @+ A! @6 ]9 y
不知道如何理解这78.12%?
$ t7 M  L) f; N9 a1 Y5 u, U" A
8 p/ t2 _- \) t3 k3 q. v' p, g' N" U0 S
margin-left的算法?' d) p) O7 I  P; r! @; T
2 f/ _+ F% d5 T# k) F: ?
1 {3 ^4 l) s2 m: }: z! H

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确
8 y' P0 U0 z; i比如两栏的词典:; J. K; U, @3 D" b% h* a# o6 x1 H) ~
1)输入分栏的三条竖线位置,估计只有个别页面需要调整
9 Z, k- x' B. T: s# h2)只需手工画出词与词之间的分割横线。
) ]  z; F4 R* \$ Y' ~( n( _再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
4 W3 G) a0 [6 J6 S5 z! Y3)每章划分词条完毕,一次性切割图形
8 I" @& e8 J0 @. U' P6 p7 K( |) w

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑
- [, P9 E7 r8 }; c
vbnet 发表于 2016-5-21 23:02
' `4 `6 |9 W/ a8 Y0 }8 k>固定框无法向图片下方移动。
+ i9 u" B% w3 z' D0 d& J8 q

* `! B9 v7 U$ V- G, X固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。
! \! K$ B7 t5 E, A% M3 h

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05
- ~& R, _/ h- A- x. }. R* [8 ^固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...
  x# \+ b$ n6 f' j: D
改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新
& i/ @8 r& `0 r* k
* ?- f5 V) ?5 F" H$ _) v4 d>固定框功能
: V; B0 O/ k! Y9 c1 |/ R6 A9 e6 P: `+ ]! [( M5 ?# t! P
修正卷轴下拉后,不能往下拖动的情况+ O+ Z& |. ^' f1 G& _2 s- n

/ s5 Q! z/ j, U. M3 s

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
/ R4 z2 [! N: h% e7 s
chigre3 发表于 2016-5-21 07:29
2 Z4 M( B& u4 h+ \vbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。

+ e0 M  g9 j5 u+ H
$ @9 W+ d5 `2 T" N2 E; _* m这样方式如何& J& `; T7 A& f) f
% m7 e) s8 y2 K# f
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方
7 T, d% r+ t# t. V( S  ?; `# E) [0 C4 _
点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮
' z, V6 T/ z+ {& K往后只点图片
9 d2 c0 ]2 r4 k* z0 y5 F. ^
/ ^" u0 [3 Z5 }6 N; x5 F- {/ I  t/ v/ Z& }0 r# W' n: d
还是加入公式算出%?3 m5 t9 G% I+ H( d) K
* N  ~: x4 D5 U$ @" d9 N

' ^: ^+ A! H$ q+ a8 T0 d
4 A3 J- f1 ~9 _' I如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?
' z* u) `7 _+ D6 `; o
( ~1 c4 [- x& t9 E( Y- Z3 e
0 }. S: l; V; n: j5 ?5 {* v. g. p) d8 C3 R7 {
如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:411 W/ _3 Q" R( w( C3 }4 _0 J
2016022更新
- A7 [3 R( Y( Y+ O* p& X
4 `2 D% [- q' k>固定框功能
* q1 d, ]1 X1 T  ]) p4 a5 m
完全正常了,效率好高,大赞赞赞赞!!!
6 b3 Q; m( \, _6 w8 s3 c+ u期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
7 |* S2 h. r! _, \) F4 }这样方式如何
# _/ Y2 r- g, k5 J+ b7 T1 Y7 a/ v+ b# s7 l
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

+ I9 }5 @4 x. v整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
% L$ b( M: p! Q0 ^3 G4 }, l完全正常了,效率好高,大赞赞赞赞!!!
( b( K* l5 {* c( q/ r- k$ `期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

4 e+ d$ x& N, a3 J( @: l# ~: }想法
- a5 Z5 s/ b. E' w5 A+ ja,b,c,d指向同一张图- s, X) c8 h* B2 T/ T
a词存图,设a为跳转目标,b,c,d指向a
+ p; P2 }. U2 y6 q/ i  T/ y8 q------产生对照表---------------* Z# ~/ w$ g* B& Q$ T! E. r
b#a* f; ~9 \; E+ {
c#a' a7 ]4 F, `" P0 L, V. g% w
d#a0 t- a9 m/ `1 n$ }, N5 j
--------------------------------------------------------) G/ |( _+ g3 Z/ y
寻找:, j5 w) Z! t1 [6 p/ z
(^.*)#(.*$)
4 W) G2 F) ]4 J' F$ c6 I取代为:5 K2 a7 w3 n2 t. ~& T
\1\r\n@@@LINK=\2\r\n</>* g+ F, \, Z- b! ~# O* e, B
-------------------------------# |4 l9 j# l7 O5 m- V, T
b
$ j& V  j$ s4 f0 ]5 v" L@@@LINK=a( {2 b+ ^: T7 W% n5 ?$ ?
</>
$ x( l( U. D- m- cc
9 t; U( f( ^% C  s# W@@@LINK=a0 x9 }$ Y! E8 w$ y
</>8 s3 k+ m3 Y$ c) ^) Z4 a; F
d" N) n1 _( `1 ~$ l2 K( T
@@@LINK=a
2 O- J' I) N2 B: a6 G( n</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52. n7 z, y( [$ Q+ L$ s6 X- H
这样方式如何* @# D" r8 B; }% ^
1 C4 D* c6 v  o, M
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

# l8 R: a* O9 o& W+ k! ^这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:527 a% |' a% ~1 P1 L. r1 b
这样方式如何! i4 x/ r1 g7 n; h  {3 s
& b+ F: N; @% S0 x9 m  h, ^7 b8 Q( S
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
! B% g4 K/ V7 o9 d( l6 }
默认的情况下就是你说的这样。
( ^+ ]+ O0 P. J4 ?0 o& F1 r之前的测试文件还在吧?
! m& p4 J0 i" l7 n# j8 i8 `( F输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。
1 ^3 E, a% c9 z# q# S单击这儿的数字,会自动跳到垂直 位置
7 E7 Y% ?+ E+ |+ @* A单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52: _6 C3 o; J$ n7 A
这样方式如何6 s! O: m9 Y5 h: u; W; h
4 I, K6 k* z0 U
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
( {( S1 O8 ]* m9 I. @. \
最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31# b( N* z" c' e# E! W  k2 n
这个可以测试吗?
+ r4 m* }& t3 @& u- f
用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00
: r3 y$ f: B' X9 }7 l最初加载的words列表如果也有极少的缺词可以手工加入吗?

' `% A3 r, j) h( l9 i, f. W要等更新, n9 N* d! C8 ^) v3 C
用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:112 j3 ?- W1 K) N
用法如上所述

) Z0 f! J  r1 }2 n6 u万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58. q& _% ^. X' V- j
默认的情况下就是你说的这样。
6 a) V% S$ V! h: g( y8 ~% p之前的测试文件还在吧?1 w. Z( }4 U/ z6 S8 I, b! t
输入YHCD_001,你会看到完整的该页词头索引,按 ...
* @# r" A3 l0 ^+ D% a
等你实际做几页,看看效果如何
; P, V6 m6 \  I) L1 h% n0 I
5 T8 r+ G8 R  |

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11) h" F4 c$ c* U7 I5 Z) \* J
用法如上所述

3 E, V8 K6 c9 ]; B) g% t$ P打开的图片文件名是否可以写入?
0 l* X9 o6 [; S# Z: J这样方便后期编辑。
. w; N0 I- J, `/ g4 {" z$ q% {* j9 O----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27
# i0 W8 i4 Z8 Y  {4 a* T想法% V* ]) C/ I' r, |  t8 L
a,b,c,d指向同一张图" l& H( |! v* L3 Q
a词存图,设a为跳转目标,b,c,d指向a
: I5 N# W' U) ?# m
想法好!集成到程序自动完成就超级棒了。
. \4 B. i! X( p0 O不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。
8 c; \* Y6 }% I% n' b

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-5-13 14:37 , Processed in 0.064877 second(s), 6 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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