掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新4 j' ]' g( o& x  ]# a/ B
7 e5 m6 a& U7 C9 i
>套索功能/ v) ~. o6 I$ W& }, W4 D  L) v: ]2 b
# B' `, A( M: A+ U
修正在词条的下方有很大的空白
. F/ n8 v  r1 p0 d7 B4 g, C) J0 v4 y* t: Q, h% z% x
线条再细些

该用户从未签到

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

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层
8 W: e) A5 l+ X

# P$ E6 s+ }( i+ ]" T, Z4 a' T解压ZIP:/ W; ~, L7 J$ D) d

% T1 e) l+ F: U" q/ ITEST.html 可以用浏览器查看一下效果
' \* i7 t- s% lTEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!( K4 t# S) z5 _' w3 [
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39" N, m6 f& r+ |, G0 w5 p; h' f# w  _
单纯给出坐标9 K9 r- B1 Y4 @, `: i
比如- V* W3 w; A% W2 Y/ w& O
offering#20,400
' y3 i3 o8 B- ^; i; N# k7 T
我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 ). f5 I+ _' w" _! m( x6 |
margin-top = 纵坐标百分比%2 q8 T3 `& R% a2 f, s0 l
------------------------$ ?) u- y* d) \
注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python
    # J: p% R' N# x/ z$ M
  2. # -*- coding: utf-8 -*-
    # t; G6 y2 J9 v: t' F
  3. from Tkinter import *9 f1 U7 |# p9 G/ J
  4. from tkFileDialog import askopenfilename0 R( x  G! X  w6 h2 F. J$ P3 K
  5. from PIL import Image, ImageTk
    . d& F$ O" v( m7 _

  6. / Y$ R; H& P* J
  7. if __name__ == "__main__":
    4 w; k4 {: F6 Y/ q3 `, `4 I
  8.     root = Tk()0 H* e) I) \5 L, |* R! a
  9.     #setting up a tkinter canvas with scrollbars
    2 F" _$ F' r  o: J/ h$ O
  10.     frame = Frame(root, bd=2, relief=SUNKEN)
      I: k; I1 m, k6 J
  11.     frame.grid_rowconfigure(0, weight=1)0 W) f( s& t4 i  Z& |0 v$ L9 p' X! [
  12.     frame.grid_columnconfigure(0, weight=1)
    $ r& K4 N- x9 M; B) ~' D
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)
    8 t' T' ]) b0 V. Y' B6 x( |# r
  14.     xscroll.grid(row=1, column=0, sticky=E+W)
    0 x9 s9 Q9 Z$ l0 G( T9 d" f
  15.     yscroll = Scrollbar(frame)
    # e: T+ g" {1 p+ i$ Z
  16.     yscroll.grid(row=0, column=1, sticky=N+S)4 O+ Y$ ~' u) v! `7 c
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
      O' ^; u# S8 y: q% R2 N5 m( g# M" R
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
      u3 c# M1 z3 I
  19.     xscroll.config(command=canvas.xview)! v5 f- Y$ g: |
  20.     yscroll.config(command=canvas.yview)" |- {8 y. w0 |1 b
  21.     frame.pack(fill=BOTH,expand=1)+ H/ q+ d+ s  A; ~
  22. 5 p9 |# ?$ i. t
  23.     #adding the image% \* ~. y/ a7 N9 b8 y+ U. t
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')( t+ H$ l. F  x2 Z3 U
  25.     img = ImageTk.PhotoImage(Image.open(File))& i, m( `% y+ D# \0 D' l6 }
  26.     canvas.create_image(0,0,image=img,anchor="nw")
    & v5 c0 P6 d7 P# {7 t
  27.     canvas.config(scrollregion=canvas.bbox(ALL))
    ) h5 R" f, A1 @' k1 J: W
  28. 7 z; ~  J) e$ a( S6 k" g
  29.     #function to be called when mouse is clicked: r2 L/ j3 }1 r; M8 h# L* d" J4 U; v
  30.     def printcoords(event):( O/ C% ~- a3 X7 E: `+ h) {
  31.         #outputting x and y coords to console
    9 i, O4 u- v5 P  A
  32.         canvas = event.widget
    , ^4 U" ~: L% h
  33.         x = canvas.canvasx(event.x); w* g" K/ l! T0 |7 f0 a
  34.         y = canvas.canvasy(event.y)4 T1 G* s* Z, H' T( n
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")( W+ C8 Y6 K) X* v* {" e
  36.         print x,y6 [' \/ Y6 }) q# e' b( q1 Y
  37.         f = open('_coords.txt','a')
      [9 U) d5 V4 g5 x
  38.         f.write('X: %s\tY: %s\n' % (x,y))9 t# n, h8 I& A. m! o
  39.         f.close()8 Q' H  r) d8 [, ?0 ]2 n9 f1 @+ _
  40.   ^4 f4 ^! n( d: c) l
  41.     #mouseclick event
    7 t% X2 I2 y/ a
  42.     canvas.bind("<Button 1>",printcoords)
    ' C) u3 [" K: _, M7 e2 ~6 i
  43.     root.mainloop()2 D/ `# G) D" F4 |+ o6 t
复制代码

6 K3 X+ `, l# R8 F
0 }% G- o4 Z" J: ^! {来源处:
$ ?: R& R- O4 L+ w7 whttp://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:528 x/ ?$ Y0 o& [" f! A
解压ZIP:
: C) e3 A4 C4 d0 e/ r5 \# \; A( [  U; t& w( R; \+ n/ i: k
TEST.html 可以用浏览器查看一下效果
5 w" E8 z. \: @" a$ P
基本了解
) t1 Q9 _- j  icss position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑
2 C3 z. s/ n0 ~, N' T  K& B; Y
chigre3 发表于 2016-5-22 00:58
, z% A" d0 X7 G/ r) w* E纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )# W6 w) l) x: d* {, f
margin-top = 纵坐标百分比%
! X4 Y$ \* j8 B) Z! A* @------------- ...
3 ?! l4 k- A9 R% L7 w  i
2 ^6 J" v: g5 }3 N5 c% B0 Y
3200x5000
7 I2 t3 q3 x! Ly=2500
7 Z/ z6 h6 W# f* `! {$ d' V! kmargin-top=2500/3200*100=78.12%
' {. \+ N% w# I. i3 v
' [3 H& ^' J; f) a- B不知道如何理解这78.12%?
" u, F6 q9 V, G5 N4 ^( G; D9 k1 {8 F5 N2 M
7 _- {9 c4 u+ I$ x! |' g6 V
margin-left的算法?( r* S  S# n8 T* @6 a

! Q6 o# C: z! ?& b; m3 Y$ Y; B$ F" d

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确8 j. X2 p( N# N3 b1 y  @0 Y
比如两栏的词典:* m0 s% G: S5 M6 L
1)输入分栏的三条竖线位置,估计只有个别页面需要调整
5 D# G0 J2 A" Q/ A2)只需手工画出词与词之间的分割横线。5 L( p2 v( f! O( j9 O/ Q' D; y
再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
" a- D. [# R+ E( Z3)每章划分词条完毕,一次性切割图形
5 x; |4 H" k! R2 Z- V2 j1 o& |

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 ) p, k& f& j" p6 z9 N% v* |
vbnet 发表于 2016-5-21 23:02
1 e( F" X' j7 ]( _' }: {# A>固定框无法向图片下方移动。
! p! `9 ?) B( `4 i/ b
7 `# i. z+ o0 K8 \, d1 l
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。  s) E. Z& @# ~4 m& a. {! K+ z7 w

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05
' O& o+ ]2 e7 n固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...

  j2 R1 O5 A% G- m6 e" j) M9 ?改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新) c) f$ W8 V$ w. X: q6 P

; W' G) B$ r6 _) |# K>固定框功能
2 _# y6 H7 b; d+ z8 e& i# d5 W/ a8 ?5 I! N" |
修正卷轴下拉后,不能往下拖动的情况
% P+ h0 d, \4 S$ ]# \1 S0 R" O5 b, l4 a7 @4 Q

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
, o! w* V7 ^' q
chigre3 发表于 2016-5-21 07:29  Y; n* w, Z8 m% ?
vbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。
8 C$ q% t% e4 N+ `
5 F5 [5 U* q+ r6 I
这样方式如何
# r1 I4 `' j+ A2 e- R; S) f! j2 m+ \, p7 t
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方
8 x  V1 j& E- D. `) l8 x3 l3 d1 ~, Z7 G5 Q9 N. V! D- u' N% R
点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮
8 C  U( J2 B& n# J6 W: J7 c+ ?& F) ~7 G往后只点图片. W. D% @  x2 h9 v5 M
3 v0 J+ Y' s/ f) x! v& b+ B. D

8 I( k) O$ Y. [$ A, U& `, }/ C: f还是加入公式算出%?$ n6 M6 Y9 b: a$ J: [) r" O3 l# t4 m
, v* ^% A  ^* e) _: _
. I  Z+ K! |" _

  s  s3 p8 n+ p& R6 o  s如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?
- _* I# F; e; K
8 ^/ O6 A% c$ q+ z9 F0 T2 F( k' G, q, b& F; ^! q

  x. _! F: u7 G* O9 m8 N5 n& _" j如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41/ m9 x/ W0 ]$ i3 j/ C! R! ~, N
2016022更新# X4 Q  J7 K1 X: P; o5 ?: `& p

# \  J$ I. \( M# x>固定框功能

2 Q2 ?( `1 t" ?+ y& t完全正常了,效率好高,大赞赞赞赞!!!
& L: R* Y' b2 ]8 W  @* W" a' n期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52/ R. t1 a* k# r* C$ j
这样方式如何
8 t* v# x5 P/ F6 ?
+ f* N2 b' A7 `  M: _: H开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

% U$ J& o( U/ p+ N$ K5 l" W整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38) @+ Z3 U; k, ?9 W
完全正常了,效率好高,大赞赞赞赞!!!  a6 K+ t0 N4 {* }% h2 g0 Y
期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

: L' ^, y& g9 }  K3 p, }9 v; |想法
1 i7 V9 L6 Z) Ya,b,c,d指向同一张图
- R( ?  y/ `0 x) v$ ^a词存图,设a为跳转目标,b,c,d指向a% X* _3 V* |1 m3 t$ V
------产生对照表---------------
' G& u0 N5 e: v2 n; `  S% v9 z8 v+ lb#a
4 k8 k2 U! u" Ec#a
! V' y9 ?. ~4 ?+ P2 K. cd#a4 a" Q: h  O, g, v7 E
--------------------------------------------------------
; [" G& q2 J4 C* G! ]+ }# r寻找:
. O3 U1 H" o* ?! Z; Y' f2 u(^.*)#(.*$)
+ P3 m3 C# P+ h3 t4 P' e" M9 M取代为:& t( e9 H0 ~" Y
\1\r\n@@@LINK=\2\r\n</>/ Z1 c/ s6 V, G( f; g7 q* W) i* z2 m* j
-------------------------------
5 e1 u6 D" Z9 \" ^b5 x6 f: u" S: l, }
@@@LINK=a
. J# z3 q5 E1 Y) r' l9 h</>
. x5 ~9 u. b" f. S. y$ R5 {c
. x; x: \" I, c# m  a@@@LINK=a
7 A& H. e" E" {( B" _  D' j</>
$ Q+ z4 h# U* q7 [) I! Z9 s9 gd! a1 t  X: K9 N5 x. |
@@@LINK=a
( A1 K0 J. e; w. Y- r9 j, E</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
5 f3 b- o: @+ D8 a这样方式如何
6 y% m1 h/ O8 t2 t6 r7 f
" K9 W" r! T! C( W/ o' M2 f开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

1 ~/ }; Z- V4 B8 h2 D; n6 \这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
( \  \* M8 Y6 G  H" B) M$ T, }; U  u这样方式如何
# ^/ [8 }. u2 j8 Z+ k
' q4 G. E7 F& S3 ^) ?, j开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

5 F+ B' A5 a. {8 a; v8 J默认的情况下就是你说的这样。9 F2 L5 u5 d: @! S/ E- L
之前的测试文件还在吧?; Q4 i7 [+ o  G$ }! w% R% E& \7 n
输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。
" m' Y0 D2 Z' h" Y单击这儿的数字,会自动跳到垂直 位置
' w9 p1 U4 }4 ?* L1 v% x8 T5 ~; N4 V, {2 ^单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52* q% A* H. Y. |  ]( L
这样方式如何
# V7 |5 {8 e2 h; }% G
6 j- v. U( i- ?3 o3 D开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

/ s& [5 j, @1 n. @4 k; u最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31( ?  l+ t& G% z( e) l
这个可以测试吗?

7 }# o. C" L/ t- E9 P& \" ]用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:003 }$ ^) q/ u* t; |' `% j
最初加载的words列表如果也有极少的缺词可以手工加入吗?
8 N8 O4 U4 f/ X7 ]
要等更新
) u6 R" I6 K" ~用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11# b" t8 c: I2 `9 `+ i! P
用法如上所述

& K( V" q. F; u  G4 I  |6 H) ]万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58
2 `4 E% B5 B( t6 Z: p) i& D/ ?默认的情况下就是你说的这样。
4 z9 q6 L% W7 Y之前的测试文件还在吧?
7 J# K* v7 j- X/ Y+ [# _" F6 `输入YHCD_001,你会看到完整的该页词头索引,按 ...

2 ]0 P  R* w# ]! z% t, A等你实际做几页,看看效果如何  g; H; E3 i" F

4 K5 y1 K5 K! e  Z; b9 g

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
  D& O3 T- h/ _, |用法如上所述

: r3 H5 K6 U7 e& B, P, v打开的图片文件名是否可以写入?
; C! m! s3 t  H6 i7 j  A5 C7 t这样方便后期编辑。
/ L$ ^9 {- e* }----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27
. C& p8 o5 m0 {& ~想法
. b6 M" X) ?& d% @4 T/ ]a,b,c,d指向同一张图; A7 p0 K& Y& G/ P! \1 ~7 o9 g
a词存图,设a为跳转目标,b,c,d指向a
- g8 Q$ g- o" Q8 H$ g! w* X3 c7 r
想法好!集成到程序自动完成就超级棒了。
9 W3 d2 O* J6 |+ `不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。
  z9 T" D$ D, L& M7 |1 J

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-4-29 13:52 , Processed in 0.073374 second(s), 5 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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