掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新
' @( d2 i) W. W" H, y
) B6 u8 Z& R, y7 q. Z; m>套索功能
4 \2 F3 F$ ~: ]5 h: ^6 N) |' _1 u. w9 |: y, c
修正在词条的下方有很大的空白1 h+ E+ g) h% S3 ^- F& u& y
8 D' T+ _" _3 l9 T) S% [
线条再细些

该用户从未签到

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

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层
1 }5 o: v8 Z- Z* o/ a) _  x* y9 x
$ Z2 i. C; @7 U- e) g7 {  i: q
解压ZIP:8 W* z) a) |( U/ M1 D4 J& U

1 f* p: D5 ]) t3 r7 j* Z1 dTEST.html 可以用浏览器查看一下效果0 D3 v; Z, b' L3 ^" _
TEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!9 F8 r# O  g; F3 z- W
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39
0 G$ c) M% Z* o; a单纯给出坐标- A- a0 P: F+ \( D& N8 z6 F
比如! G, s6 C. M$ z( g
offering#20,400
5 F6 \! K' V  c! j% t& |' I
我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
* Q4 W  i# ], `% amargin-top = 纵坐标百分比%
. p$ Y9 v9 @4 ~, X- z------------------------8 G( @" B: @# i8 ]- j8 j4 B# z
注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python) a1 M1 h- i, {2 i
  2. # -*- coding: utf-8 -*-
    & S& F: h8 l& d4 [: `% E: S
  3. from Tkinter import *
    ; O9 C$ a8 n2 v( F+ u. m) Y
  4. from tkFileDialog import askopenfilename% A  [. o5 b3 i
  5. from PIL import Image, ImageTk
    % e6 u$ I8 b# r6 X8 J* p' _

  6. " x, W' r! X) L" t: q8 `0 C; [
  7. if __name__ == "__main__":  p% u1 \8 t, p$ i4 G
  8.     root = Tk()& H( @! O( Y  P: J
  9.     #setting up a tkinter canvas with scrollbars
    7 B0 T8 J5 x% Q4 P4 |) U% o
  10.     frame = Frame(root, bd=2, relief=SUNKEN)$ x# d0 X  e$ p
  11.     frame.grid_rowconfigure(0, weight=1)
    / F* h5 e0 J- J) C0 I
  12.     frame.grid_columnconfigure(0, weight=1)
    , p- z6 q# c; r2 B
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)
    ; W3 u! O  w: S
  14.     xscroll.grid(row=1, column=0, sticky=E+W)
    0 B1 T# o( Q4 C/ v) w
  15.     yscroll = Scrollbar(frame)
    9 r! E' R% K, i
  16.     yscroll.grid(row=0, column=1, sticky=N+S)9 B2 P& G9 `8 F' u8 l
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)7 B! F; e- I- M/ o" Y
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W); Y- f5 G( j) M6 [. \& a" y( j
  19.     xscroll.config(command=canvas.xview)
    ; x( R8 k! W& {8 ~2 F
  20.     yscroll.config(command=canvas.yview): F( _, ]+ ^4 x  J$ H/ A
  21.     frame.pack(fill=BOTH,expand=1)
    " H$ e) h3 d; k! A) g& C" ]1 l
  22. 7 W/ [' m* ?1 p$ F
  23.     #adding the image
    6 }; E6 C+ v" H: u9 a5 w- M) O
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')3 e; y/ w8 p- T# r8 @3 y. B
  25.     img = ImageTk.PhotoImage(Image.open(File))
    9 U3 O! v+ R8 [& H
  26.     canvas.create_image(0,0,image=img,anchor="nw")4 w- J& w2 p9 U0 c. T4 ]3 g# o
  27.     canvas.config(scrollregion=canvas.bbox(ALL))5 ~8 A3 {+ c; q* Q" d9 F% H1 W1 t

  28. : }( ^4 I' \( b' U* M' o: H5 ]
  29.     #function to be called when mouse is clicked3 a# t+ d. X! z6 @% p1 m
  30.     def printcoords(event):( T& S) D9 ?7 h& ]. a$ b
  31.         #outputting x and y coords to console
    - c' r; l4 m1 ~5 C6 J
  32.         canvas = event.widget( v* `/ m% P: c6 v) _; R
  33.         x = canvas.canvasx(event.x)
    7 }: q2 |8 O! d) t, ]# d
  34.         y = canvas.canvasy(event.y)4 E! w* |7 p3 _' ?
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")
    9 y9 O3 H% f; v  G8 g+ v( t" z
  36.         print x,y
    ) a5 @9 z) [( ~# G6 K
  37.         f = open('_coords.txt','a')
    # K6 p1 w0 e* z
  38.         f.write('X: %s\tY: %s\n' % (x,y))0 s3 T: Z+ {4 H1 ~
  39.         f.close()4 ?# Y" X- W2 a3 i

  40. ( |: T4 N2 G: _/ w) C2 O9 ]% C
  41.     #mouseclick event' x% j  q' P2 E6 b; O
  42.     canvas.bind("<Button 1>",printcoords)
    2 l& Z) T+ G* g4 {3 E1 {8 m
  43.     root.mainloop()( F5 i* I+ u% L2 X! ?/ L% ]! V
复制代码
) D" p# ], y8 {! j- r

/ ]! K( b) j) j* I8 v2 C: ?( N来源处:
6 p( M5 u1 c* i) ?http://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:52, B. ~  I4 @" K7 X
解压ZIP:% y: `5 `1 P; |' o

0 }2 M1 C2 s5 o8 Q, r3 qTEST.html 可以用浏览器查看一下效果

& z* `5 K2 I0 z% ]* Y# h2 P. l基本了解1 Q- M" |0 d( M  C% O2 U# d" F8 X  |
css position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑 5 p9 G; k8 V" C$ _: ~% ~3 p
chigre3 发表于 2016-5-22 00:58
" |; z( P% [- v/ \7 y6 V8 ?纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
: f$ y) x, o, T, v. Zmargin-top = 纵坐标百分比%
7 Q2 c7 K4 t$ Q( |3 J' J  i, v------------- ...

2 Y* C# A2 s. `6 h9 Y4 \' V- U, K/ I5 b/ R0 y0 d9 W% v: c( g$ u! w
3200x5000
2 @* n# Y( `# ~y=2500
7 y% f; j- f& j# @margin-top=2500/3200*100=78.12%: n1 N# p) ~6 i8 y% q4 r; r3 [
3 f) q4 J- c7 r2 U% }
不知道如何理解这78.12%?
$ E+ e5 N2 e$ {# l( M" i2 ~" }' W* f
, u' I% I5 i' ~4 Q# P8 B
margin-left的算法?
$ e4 K( f; p9 R8 j
8 P4 i2 k" i0 @( ]8 l; M  G6 p0 m7 @. `

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确
1 s: ?% t6 v# y比如两栏的词典:% d9 L" U8 ~; l1 ]9 }
1)输入分栏的三条竖线位置,估计只有个别页面需要调整: f- g& K2 B' ?0 I, z
2)只需手工画出词与词之间的分割横线。
1 j0 q% g0 R+ I. k6 b再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
. j2 h1 R+ R% E+ x  t3)每章划分词条完毕,一次性切割图形1 t0 J- m" h) t  g

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 2 d; B8 B$ c" {  F
vbnet 发表于 2016-5-21 23:02
% S* Z& l$ m1 t( Q5 c>固定框无法向图片下方移动。

4 @& b$ B/ K* b$ Y' W
2 o- y, _* f3 L" G0 |6 {; t8 w固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。' Z: {8 }& ^6 r+ |

该用户从未签到

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

9 C2 l' i, m" h改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新
- @' g2 Q; P8 `1 }7 @& \9 k
9 k5 _* m; `3 R+ d& N/ J>固定框功能) J  ]7 f/ B9 W0 I! r

- G2 ]& F$ P7 q4 O修正卷轴下拉后,不能往下拖动的情况, t9 B1 z  y2 q+ z' h3 T
+ q% ~0 }* B2 T

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑 ' Y$ Z1 }" }/ b/ N: e* K( s* ]& F
chigre3 发表于 2016-5-21 07:293 u% M6 M' \* k: F' j" A9 W
vbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。
( N! c7 l# H9 \. [

* V; {8 Y# ~" @: v' h& C. N这样方式如何3 ]# }2 _' l# C6 T$ ^. s
* w. z! r5 d  ?' g) S$ O) t+ l
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方/ H1 s1 n6 N' F- O
8 v( i+ a! l3 o7 A! t! y5 H) z" Q
点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮( k/ @  n, ~, ^2 W
往后只点图片; n: O% S  l8 F
8 m' f) E* E& j
+ P$ P: q% q( d" M+ R
还是加入公式算出%?' a7 q( Q& d. }; o5 p

+ n$ v$ c0 s+ S- C' P* ^
0 |1 v; n2 c: ^$ s; Q1 A$ l' M) _. p4 j( v: C
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?5 h. `6 e+ n) F

: l4 ~- v0 x7 \4 R8 s) N3 e
* u% a' G( n5 @6 V* g  z: |
& j/ }; K8 X4 F9 z8 T1 R# S如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41
3 i  _  S" V5 D( T- c8 b2016022更新
( a! M9 U7 R: A$ D! \6 |) Q; W/ o$ a, J
>固定框功能
# r4 ~) m5 J9 i5 y0 Q  x
完全正常了,效率好高,大赞赞赞赞!!!
1 j- g! a8 ~& y( n期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
, X$ @. X% r; c; ^4 K6 S这样方式如何
7 O% R' B! H6 Y) R! D
& @1 Y( C: O) j开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

, f( O3 |2 e$ B$ {8 [6 n. x" w整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
8 n+ C! a3 M3 _, e5 a" i# t: \* z完全正常了,效率好高,大赞赞赞赞!!!
7 m; J7 e# ^6 C  t/ ~8 o' K期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

: E3 f3 D3 J( x) X6 o$ I  L想法" |& [- i: L" ^
a,b,c,d指向同一张图* m1 y) S3 q" [+ m7 O6 S0 i8 M
a词存图,设a为跳转目标,b,c,d指向a
( K# @" M3 U; `! }' Y( L7 L2 m------产生对照表---------------
( @9 U0 F7 |  z: X9 N1 Sb#a
' f% b& V8 p& A4 jc#a9 ~2 S4 o. Z$ p# b7 `6 G/ ?7 z
d#a
8 L- \4 T( B4 S5 r7 [8 U--------------------------------------------------------
  }- a# R" s: P  v9 M. ~寻找:  I8 i. \' F$ _* q$ s# c1 C' }$ E
(^.*)#(.*$)8 O$ A" q: z: ]" S7 _/ [+ x4 Z
取代为:/ Q: f1 K0 z# W; W: i$ a  }
\1\r\n@@@LINK=\2\r\n</>
- Q3 |% c; r; R$ W-------------------------------
2 [/ I* Y& S: l9 p6 d! B6 z! Vb7 \: `/ n0 x, y& {7 X7 d
@@@LINK=a! U2 S; [3 L4 p- s4 s/ j
</>, ]4 E9 b. n3 k7 Q2 s7 }' s2 F( ~) B
c
7 S: m* o( c3 r@@@LINK=a1 E3 q3 N8 O3 t, E6 r
</>8 K% w, R" h2 `- e( p
d
; _8 B5 ]- f# T- r5 h; f8 Z@@@LINK=a
% [# Q2 m2 P! \3 q, k; o' S</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
9 P) Z9 V$ F5 y; p+ J这样方式如何
" X" P$ L  U% Z2 H. v# u8 n- K4 D0 W# V# d$ V  E4 d
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

0 j, o1 g% k: H; m5 G; E这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52# d2 t7 U# W- f' r' E  o& p
这样方式如何4 e5 l; W; L& L6 p' o% ]

% q1 y$ w9 J; U: v: S3 w& y- a开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

; o3 x$ M2 d4 K  r( J0 E+ R; f默认的情况下就是你说的这样。
0 l% F# s8 w: A1 p3 X( l之前的测试文件还在吧?
$ O; J% M. ?3 N1 K- r3 ~- ]. ~输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。$ h. J% Z. M1 l
单击这儿的数字,会自动跳到垂直 位置
3 A/ e/ j9 c& \5 P) R5 H单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52% C1 g/ o$ _, S) r! a
这样方式如何* P; t2 N: [% i

- }$ l# v8 \! K( ]% w: @开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

5 ]+ L% N8 @8 l) S/ T3 ^+ n最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31
) }% N+ N" M5 F5 ~9 @) J这个可以测试吗?
1 A& s/ U9 c! B3 i+ p- ~0 n
用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00
  h$ g# K+ C: i/ w. O' f/ [/ e6 H7 H& i最初加载的words列表如果也有极少的缺词可以手工加入吗?
! l$ S' x' U7 V3 I2 g
要等更新
- t2 z" s# A% p" o用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
0 y9 f0 `- Y* r( P# H& e! v. }: _& n6 f用法如上所述

  I+ \0 J- P+ g9 t! U7 M0 g万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:587 d) L0 F+ W# g( A
默认的情况下就是你说的这样。
) f1 o4 _* x& y& R* |3 W# D  J之前的测试文件还在吧?
# t% f; R% F5 w4 V) C% D' q8 B9 w输入YHCD_001,你会看到完整的该页词头索引,按 ...
! b  M& h9 `- E
等你实际做几页,看看效果如何! }2 r, {4 m5 s! A8 g# m( }, }
! {4 N" ]( A3 a' `, W5 v

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
6 e" e5 i- _( m8 \$ b  O用法如上所述

9 ~$ _. G% k% c3 I+ U4 _/ A6 M打开的图片文件名是否可以写入?
6 N8 _) K3 I# F, F1 F3 I这样方便后期编辑。
1 o+ ]8 H7 W+ b----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27: u( Z5 S8 H% \/ W& w9 B
想法
2 ^* p# ~* V: \$ Y$ N& d6 F% h7 g* Ea,b,c,d指向同一张图* w: Q1 u% A; b. \/ u' d. n0 ~9 ~
a词存图,设a为跳转目标,b,c,d指向a

2 n- x5 r' S# Q; V4 U' [想法好!集成到程序自动完成就超级棒了。' S  d; H2 p7 y" ?6 K
不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。, c5 l) m* V" o- y' _

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-6-7 04:36 , Processed in 0.048012 second(s), 6 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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