掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新9 j  }  N+ `& ~6 {2 J

5 Z: ^4 j; u0 f- I& V. c2 C>套索功能: s4 @8 p( K$ M7 ~" G& H
- q2 B* c' C; M- B6 P' O* X1 d
修正在词条的下方有很大的空白) `8 `$ z& v. j

: ]; w, g7 F  H% R9 N! o线条再细些

该用户从未签到

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

该用户从未签到

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

0 I: k5 k- U) ^2 ]0 D$ Y! [
0 w! E2 G3 f; i3 z6 i! S解压ZIP:
) w* Y5 \% m1 D, |# n6 X
4 R2 p) x+ k# L% {" _) |TEST.html 可以用浏览器查看一下效果
! Q8 a0 m' J' gTEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!0 }. E- \- ]1 Z; D. G4 s" Q) j
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39
8 a7 H& k" Q+ G+ T( Q单纯给出坐标7 K( f6 T5 u5 B0 j; B7 u
比如& v$ x3 j- {! }6 Z; Q6 I
offering#20,400

& U5 g) Q6 h9 E. V. r- a我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
5 V; K+ i9 K2 ]. Ymargin-top = 纵坐标百分比%
. {( q3 Y) _# `" ?1 M, W------------------------
: Z2 U* s& U8 U6 g: ~注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python! W% L* w1 J" V% c
  2. # -*- coding: utf-8 -*-* M; \6 R9 U% p6 k; n
  3. from Tkinter import *
    % G+ q; _. _6 i8 @* r4 R3 E
  4. from tkFileDialog import askopenfilename: w, I( `( x! P5 |
  5. from PIL import Image, ImageTk5 E+ _4 X6 h( X6 e5 f% ~( G# f
  6. . _% N" c+ p0 M! y; h
  7. if __name__ == "__main__":7 L8 E+ I& m) Q9 a  X3 ~
  8.     root = Tk()+ k, J+ F) o9 n" u6 N/ w' }
  9.     #setting up a tkinter canvas with scrollbars
    2 B8 k' o1 I. ^9 {
  10.     frame = Frame(root, bd=2, relief=SUNKEN)# @* x! S3 g* O5 B% J  Q3 R
  11.     frame.grid_rowconfigure(0, weight=1)7 \6 I1 [; {0 t! }. L
  12.     frame.grid_columnconfigure(0, weight=1)
    # F7 Z3 P) D4 R6 P7 @+ Q
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL). q, @6 {$ S" _4 {( K2 [3 H
  14.     xscroll.grid(row=1, column=0, sticky=E+W)1 m- i6 e* x" y% W$ P
  15.     yscroll = Scrollbar(frame)0 _. U/ J" `1 y) V
  16.     yscroll.grid(row=0, column=1, sticky=N+S)4 f9 a5 M: U6 E  E
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
    % e/ D6 @, f0 ?# L# g( B
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)9 W  g$ V1 v8 f% C) D+ D4 F
  19.     xscroll.config(command=canvas.xview)+ E* P3 g- w9 V, Z
  20.     yscroll.config(command=canvas.yview)
    0 E2 N2 `1 n$ V5 E+ d
  21.     frame.pack(fill=BOTH,expand=1)
    ; c0 v; E1 O  f8 f4 b+ M
  22. ( {7 i) t' Q. X- Q$ ?  y0 h
  23.     #adding the image+ ?' J$ t" a' _4 g1 R' K
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')
      X4 f# f8 I! g3 D0 W
  25.     img = ImageTk.PhotoImage(Image.open(File))
    ! P4 ?+ x2 m( }- x, l
  26.     canvas.create_image(0,0,image=img,anchor="nw")& n9 S, ?9 w; M' [/ i7 _3 p
  27.     canvas.config(scrollregion=canvas.bbox(ALL))
    4 |$ S7 ^  P) _: C% ^/ s
  28. % L# B) Z& L4 O: t) {( u5 p1 z5 @* B
  29.     #function to be called when mouse is clicked, S3 I/ z7 }/ t3 N) D. Q
  30.     def printcoords(event):
    % b: n, ~: ~$ {7 `
  31.         #outputting x and y coords to console
    - V; n) X2 t8 d7 z
  32.         canvas = event.widget
    % C+ U+ f3 Y$ s6 D( q
  33.         x = canvas.canvasx(event.x), T8 E- T5 A' a4 N
  34.         y = canvas.canvasy(event.y)% k" B* e* f( K" U. n. @
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")
    ' E9 `) e$ {) W" \( L2 w: R3 z4 ~; b6 V
  36.         print x,y& ~3 n& ]6 D. ]  j4 e
  37.         f = open('_coords.txt','a')# l; E, v: d1 v$ B& h) Y9 u& n" k
  38.         f.write('X: %s\tY: %s\n' % (x,y))0 ~. x  P( e* z$ |# T" S5 N
  39.         f.close()
    : Q3 {' T4 p+ d9 |

  40. ! W9 ^  H0 W& S6 K* M- t
  41.     #mouseclick event
      j( d2 k! F2 M% B
  42.     canvas.bind("<Button 1>",printcoords)
    6 L: u$ w. c& A
  43.     root.mainloop()" a- U/ N" @- c% ~0 A. B5 X
复制代码
5 F. t0 w6 F; o" Y1 d

( f& {/ t3 K, u! Z: Y' ?来源处:
, H4 O- z0 I8 O% n  L% H! x3 _3 s( Shttp://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:52( E0 ^, u8 j, h, ~- v/ j
解压ZIP:+ ^. _6 h, M3 ^, t7 t
: c# g$ D& _( k
TEST.html 可以用浏览器查看一下效果

: e+ r" N0 D' u% R8 j/ s' G基本了解* A9 q9 L9 F% O' y- C
css position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑
& N! v2 ?# _# ~4 ?) P/ R, e9 q
chigre3 发表于 2016-5-22 00:586 l) ~; z2 s# u5 h( x! A8 D
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )* j* |4 }* m  v' L
margin-top = 纵坐标百分比%
" d5 W1 }! s0 i7 I7 X0 W6 s7 D' j( ~------------- ...

4 s7 |6 t8 B: t  F& G: y
) X# A, s/ t2 J! \( n# _* X3200x5000
8 N! ?6 b( I: v& I9 Yy=2500+ ?& Y( h' R' ]/ E5 z- ~
margin-top=2500/3200*100=78.12%
( \. E7 {8 r* f3 Y0 D; x9 z( P4 @& \/ ]( ~
不知道如何理解这78.12%?( q+ J( H8 c' t' B1 h+ p

5 l" s+ }7 A- y7 u% B# a3 z" O
4 p' C# d+ _, ]9 a& ]) L; tmargin-left的算法?
2 s# p& n; C' H9 e
/ ^% r% D" F; p" w7 i
" M& d/ b0 z( V0 j- q( j

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确  A$ t5 ?* Y( Y/ E: ]1 w% I# `
比如两栏的词典:
* f. ~( G: j- J7 B- I+ }# `1)输入分栏的三条竖线位置,估计只有个别页面需要调整: u) Q* k; o9 U8 ^# O7 W
2)只需手工画出词与词之间的分割横线。' d! L, }% Q% J' E
再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形5 p: ?8 d+ g- Y
3)每章划分词条完毕,一次性切割图形
, ^2 j# x" G9 X' J4 O" m

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑
- Z1 S3 ~0 G5 V; n  w7 k9 K: S
vbnet 发表于 2016-5-21 23:02
4 {* T% F+ Z  {! k* p0 `3 D0 [# X$ d5 N>固定框无法向图片下方移动。
* y0 G6 G/ `2 w5 A4 f+ o
% {2 h& L) o  j6 h3 G" \
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。8 G: W, B' V* W8 {# |

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:059 N  Z" i( m$ d8 j2 A+ |9 H
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...

4 p& @" i3 i  E: [! }$ ]改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新9 s/ i  m) C9 \$ M7 G. x

! ?* |4 y$ _# |. @! |+ C>固定框功能- B% Q9 |' D9 T+ h
# G. M2 G$ O6 X2 P8 m; v
修正卷轴下拉后,不能往下拖动的情况9 z) m' f3 B* H' q

3 K+ d* b8 j2 a2 B+ s( s/ i  c+ K

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑 3 R% f1 Y2 }6 l8 l
chigre3 发表于 2016-5-21 07:296 Y' p, [# ?& R: x9 }3 m; d
vbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。

6 V, ~, P- T9 U4 X
- f- A1 ?+ H% K+ Z' _这样方式如何7 h- W6 t) }) g  @) `/ y! W. G6 q4 H
% g/ N( o2 Y9 q+ \& ]+ n- l: x
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方
* K  Q& P% H& `( Q# A& [# y4 c6 z# Y
点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮# @) p# X% a8 O" w- q! g2 k2 e. Z
往后只点图片
2 `" `9 u6 v4 W  \* b1 P/ ~
4 _# p0 @$ W: G4 U7 w& F4 ?, f0 u0 s$ W4 }; {; w9 ]9 ]2 L+ d
还是加入公式算出%?
1 d4 x) \7 d. q( N. \9 P6 ]0 _3 b5 {
+ |, U, M9 k, }' U# {8 V! `& o, [6 t4 j4 L8 H: o7 S: O! }2 B

. f; a8 s7 i& c- \' B" ^1 k如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?
  E. E' V. N; [: e- _; P% M. s% b0 A) I9 N

2 }7 }4 ~& r5 S4 m2 J: `1 Y* p/ l- r4 `, N) E3 ~3 n( ]. Y
如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41
$ `* a  b% M& m& i3 \2016022更新
# Y1 t5 D  M' A/ {' t& Q& q, {0 T
>固定框功能

+ f4 `4 B- j) y# m2 f完全正常了,效率好高,大赞赞赞赞!!!
6 v& q- K1 [# {1 N0 q. J  r0 P期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52; K/ T5 a: N. V; K7 I' X% U" ?
这样方式如何
3 W/ X) K+ }3 S) E+ x* Y0 P% c) }1 q' r" F
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

- m# ]9 ?! K0 s" |: g& L: G整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38$ E1 `' {4 J! [  p' ~
完全正常了,效率好高,大赞赞赞赞!!!
' Z) C- r- v' X7 m8 A9 [$ p期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

9 G8 N9 _3 q2 N9 h; l, ~想法
; C; Z$ v1 S6 N$ o6 m" F/ [) E3 Oa,b,c,d指向同一张图. z4 c$ a2 a* W1 N/ ?
a词存图,设a为跳转目标,b,c,d指向a: ^; W# N' ~2 F$ W1 P. r5 u
------产生对照表---------------
5 |$ `, \( \) b" E$ s: pb#a
# K) p- _3 g6 ec#a3 q; E: l$ y+ x, h8 R
d#a
  m  c# b* d$ M( L" u9 N# c--------------------------------------------------------. b( Q, b  L6 C% J' i  K8 J2 D4 P4 G
寻找:# p9 X1 V0 A8 t  d/ m+ W
(^.*)#(.*$)
  _& n/ L1 \3 ^/ I# c! I. {  M+ _取代为:2 ^3 |/ [' P) z, b
\1\r\n@@@LINK=\2\r\n</>
" C6 A, e3 f+ E" C6 g, o-------------------------------. {% W- }# G5 T8 i4 J! K' f* @
b
% j( u6 T7 G# r2 A) g/ J@@@LINK=a1 a$ O; y) b+ q4 {* r  u  v
</>
6 L6 u7 V+ J7 i0 c* Vc* C. ^* I( t- q% K
@@@LINK=a
6 E9 d8 d8 {9 s1 v</>
( m9 d2 ?7 @8 md9 M+ u: j; H$ x
@@@LINK=a0 [& i, f. B/ ]# q1 K
</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52' ~9 p( i! n5 u7 z
这样方式如何  w' O/ q! K% L4 D+ r8 ]7 U; _# q

* f& ~1 i# T# Q: ~) ^0 Z7 t" Z开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

2 a) L+ K% L5 y9 J这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
" C9 K$ ~5 C- z这样方式如何0 k" H7 i3 b- d* e

$ X. o, f8 Y2 h开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
: U3 g' s6 O! h7 d1 b
默认的情况下就是你说的这样。* K4 U4 P5 p/ i
之前的测试文件还在吧?7 s7 E/ a6 |5 ?' T: x
输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。7 @- i8 q, E# F0 ^
单击这儿的数字,会自动跳到垂直 位置% A) G% V1 i8 F, \' p6 t/ u/ \
单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52, G4 `( T/ t" g. I. ?6 \  S* _
这样方式如何& J3 C3 k8 t# v9 w3 x3 `
5 n7 v" F: j0 Z( K/ M+ }, X9 i
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

; z* o* b) B, {  s8 d5 u9 g最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31
! l1 I+ n4 X" M这个可以测试吗?

; [) l3 X9 O5 ?5 _; ^用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00
7 \. y! ?: D& P/ `' Q3 @最初加载的words列表如果也有极少的缺词可以手工加入吗?
2 r; l. p6 f( g7 n2 d* A( l
要等更新) T+ c! ^4 G1 Z' K- L: {
用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
& |2 B. M2 q* y  [6 c用法如上所述
; X# h3 o9 h3 |( ~* C2 L1 b
万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58
$ o; I" o+ i: X3 L# Y! ?默认的情况下就是你说的这样。
; T4 y' j. s+ q. L& ^# Y' s( J之前的测试文件还在吧?( n: G( L$ @& g5 k: B
输入YHCD_001,你会看到完整的该页词头索引,按 ...

% D0 }  V2 E) x8 A5 v等你实际做几页,看看效果如何9 C) X6 y7 w  p

( R1 m6 O8 D8 `, J0 \& Q  ]; x& ]8 y

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11, Z% Y( k, ?: @; V2 y1 e
用法如上所述
2 x7 q8 o' N5 i% P9 q
打开的图片文件名是否可以写入?# |; L+ C' U. T4 ^' Y# J! D
这样方便后期编辑。
# Q; b" I$ W" }( \2 E% c----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27( F* {* o  ?9 I- b$ I0 T
想法+ v+ b' m) I7 Q; q3 q' {% U
a,b,c,d指向同一张图: D  n& A  R; ~
a词存图,设a为跳转目标,b,c,d指向a
+ v; C" b! B6 R$ q0 ^+ b' T
想法好!集成到程序自动完成就超级棒了。
& c( W( `6 z# s不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。- @+ E% Y- H3 D2 W) o; J* ~8 i/ C

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-7-7 16:51 , Processed in 0.022025 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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