掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新1 L! r$ k/ Q, |/ I+ b2 t6 f4 y
8 U+ g0 H2 I8 q: G( d! ?
>套索功能3 B0 H* F4 }$ y9 F. }1 k% y

( ^/ a( ~# S2 i修正在词条的下方有很大的空白
# `& e. K* M% \/ N3 c* i0 s) b& p" S# x# G
线条再细些

该用户从未签到

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

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层
  k; o/ H. Y& L/ ^0 X
2 S8 p* k& t) z1 s8 s  \
解压ZIP:5 }: s8 K! b* h$ f1 u

* b: k2 V0 j" V& o+ ^  t5 `TEST.html 可以用浏览器查看一下效果
; V1 ~5 k2 J! W4 M; Z9 \TEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!* i# r- h" L$ R$ d  Q4 {, Q
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:393 w- a* C" f! F" g/ c* v
单纯给出坐标
+ K; _' U5 G% @' s4 g: ~比如
; }+ }$ v+ j% I+ ?6 loffering#20,400
3 W1 S( F  b* s! v$ H8 a+ d# y9 J5 l
我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
, o$ @4 W! h/ g- y; r+ \margin-top = 纵坐标百分比%
( s% ]8 p2 D' c, I------------------------
2 X, i0 L: p- m) @, V! d注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python( v# x; J: j. ]0 \$ l
  2. # -*- coding: utf-8 -*-
    7 s9 \( k) j+ o) m0 y: @; }4 q
  3. from Tkinter import *( a" E0 s; b9 g+ p) D5 b
  4. from tkFileDialog import askopenfilename
    * z# y9 V/ L; B6 I! j
  5. from PIL import Image, ImageTk! h& \8 X1 N* d" ~9 z% u8 i' x* z
  6. & D4 J! F9 R! H6 Y+ ]& C
  7. if __name__ == "__main__":
    ' B# H' B% {/ t+ U
  8.     root = Tk()
    ' X8 A. V* s5 R2 u) b2 |1 N
  9.     #setting up a tkinter canvas with scrollbars% c7 j" J3 c1 x& y8 d0 i  m
  10.     frame = Frame(root, bd=2, relief=SUNKEN)
    # m5 H* M# g) y/ x, F8 ?" L
  11.     frame.grid_rowconfigure(0, weight=1)  \/ S  l  i; B0 j; i0 u
  12.     frame.grid_columnconfigure(0, weight=1)
    , M& ^0 r# n/ b" s; O, \, H
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)! z1 A: [; ~7 m. i
  14.     xscroll.grid(row=1, column=0, sticky=E+W)" n3 ~( |1 U' L4 C& V4 ?4 E
  15.     yscroll = Scrollbar(frame)9 j* x/ x/ d! u. V" k! Q3 U6 l, p/ {3 a
  16.     yscroll.grid(row=0, column=1, sticky=N+S)
    $ E; H; C5 i0 Q0 m1 v
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
    , D% Q# [9 \: h( m% r8 Y- Y
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
    * L; Z% w  }( R) H% J/ G' `, [
  19.     xscroll.config(command=canvas.xview)
    ( K9 G6 Z- g2 E5 d  w" Y2 _0 m
  20.     yscroll.config(command=canvas.yview)
    1 p# r0 a  J: x' z# [
  21.     frame.pack(fill=BOTH,expand=1)5 f/ \& U3 s/ N! Z; ~0 J

  22. , i6 e, ^2 w! g, F  t2 \
  23.     #adding the image+ v6 E0 S, _6 n" C8 v
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')5 z* r$ h; ^& h4 r& i: c
  25.     img = ImageTk.PhotoImage(Image.open(File))/ `7 m+ x9 c8 x) u2 X
  26.     canvas.create_image(0,0,image=img,anchor="nw")
    & P9 j+ U- i- _: p. d( V+ y
  27.     canvas.config(scrollregion=canvas.bbox(ALL))
    + s2 ~( c- _; h* t7 {6 \4 ^

  28. ' j5 E: N. r/ ]; M4 j) ^
  29.     #function to be called when mouse is clicked+ }! I! k8 h" e+ l( V
  30.     def printcoords(event):0 |" u6 Z9 M: H1 y* l6 Z! Z
  31.         #outputting x and y coords to console
    - z( _6 _- e; [" K
  32.         canvas = event.widget& d- ]' H/ \! r" e
  33.         x = canvas.canvasx(event.x)
    . Z' n. v3 j% \
  34.         y = canvas.canvasy(event.y)/ s/ K; l( j' [, \( Z. N* Q% Z
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")2 m- W1 x7 w4 L( C! T
  36.         print x,y
    + u$ G; m( s) h0 c, s, y
  37.         f = open('_coords.txt','a')( z1 J' z  j0 }( C
  38.         f.write('X: %s\tY: %s\n' % (x,y))% s4 ?' P, X# T- j& }
  39.         f.close()5 N' Z( M9 s  J2 X9 b) l
  40. 4 ?$ L% Q4 I) L0 z0 U, ]
  41.     #mouseclick event9 v& r8 @- Y9 p8 x
  42.     canvas.bind("<Button 1>",printcoords)8 K, P* m) Q  N
  43.     root.mainloop()
    6 m- g5 ?6 ]* r4 [0 f2 v
复制代码
' B. G+ B1 R5 W5 C
2 D9 w# i3 Y$ g) e5 \/ k5 [
来源处:
% o: o7 {3 u0 f1 O3 \  X( Nhttp://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:520 g# g7 S; r6 g( X6 }4 ]' P& E
解压ZIP:9 G" X( z2 p& X& q; z) F' W* N
1 H, W) N4 W; J9 K
TEST.html 可以用浏览器查看一下效果
! ~# h, G4 A' V1 {
基本了解
+ E+ P, x8 P8 @9 _4 V1 j$ ]css position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑
' [, e- {8 m% E+ u
chigre3 发表于 2016-5-22 00:58
/ P. p$ h8 K0 i% r/ p& {7 Y2 \纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
  p4 w5 z! R- }7 vmargin-top = 纵坐标百分比%
2 A+ V0 F$ h1 l& t+ j------------- ...
. m3 s* x8 y: U. a5 Z

4 S' g1 |: T+ P4 o! W; c3200x5000
; F- |; X4 I. d- |, O4 Q( A5 yy=2500
) N  Y1 e' B) c, _+ Bmargin-top=2500/3200*100=78.12%
5 Q3 |: R+ W- G$ [( E, R( H  K' m. Q; t: H0 a
不知道如何理解这78.12%?
. X2 O% n) _9 y. `: L/ z, V
: R$ p/ Y7 G. G% J% D1 p( S3 s6 h, _9 x' E9 u
margin-left的算法?
  A8 ?9 G/ q! Z( I6 G  K( _$ \2 ~
" M+ j8 T# ~' ~% T3 k( `
: D) q: f" F, Y; ~" f4 B% t3 W$ l- G# a

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确- G2 c2 H0 f2 f$ y3 M( e$ C
比如两栏的词典:+ f% q+ m' Q; C
1)输入分栏的三条竖线位置,估计只有个别页面需要调整
* H3 P8 f5 H* S" l, L2)只需手工画出词与词之间的分割横线。+ U- m0 v$ J& f; j
再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
1 b! a5 A3 L$ q9 _4 d3)每章划分词条完毕,一次性切割图形' r5 O. ?: @( h0 K; g' K4 r

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 1 G1 `0 Y$ v; w0 r6 ?$ ^- [
vbnet 发表于 2016-5-21 23:02* Q' c6 |; L0 u6 T( t
>固定框无法向图片下方移动。
) C3 `' _5 w5 x" |3 y( \

  @7 i# f) b/ X! _* N% p1 O- M固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。0 T8 T/ X5 ?/ l: k; q* a

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05! D. @0 f7 P4 @
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...
: q1 v; P) V, E: c
改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新
( P2 W8 ~. V4 i8 d0 F0 p, F  @2 m5 |# ?' ~( ?' A
>固定框功能
7 |$ W: d* y/ S4 v# ]! y- ~6 j  o0 U0 Q: f' H
修正卷轴下拉后,不能往下拖动的情况1 r% f- E1 z  Q

+ F- z2 D, }' f: M! X# j

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
" h+ s# L* h& N2 s& d8 N
chigre3 发表于 2016-5-21 07:29
  x0 V0 g8 H% M" Hvbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。

: D# B# B$ B; R0 @+ [  U0 p  F# y! K' k/ q+ {2 [0 F
这样方式如何
: d* R& c& t( F9 o3 F1 x: P. X3 a; X( M0 t+ X
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方
# E+ P7 ?1 A3 G- x4 O: b" @, D* Q! q4 d/ h
点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮
) }( Y: Z5 m& X$ Q& k往后只点图片5 I) z6 |" x  w$ P6 \
: `# m* [1 w! H9 M

3 K- `; [8 I, I6 w6 N3 {4 c还是加入公式算出%?
! `( v( @/ w, L
/ W1 z+ S2 G: ]: Y9 J* S9 |. H
# o$ U% \0 d; e1 t3 Y; X/ [1 B3 o3 ?. c( e0 @
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?
/ {1 T3 [& g9 I& \2 r8 a  [1 ]3 g7 ^8 q
; ?( I( g4 j: ~% H- I% P$ f1 S

; j  C5 V2 |1 @6 X; R; w如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:417 m# x* g# i0 E) ]8 J
2016022更新
, U5 Z, A) B2 i* `% N6 x( ]# l; ^0 F. P, d$ ?9 _
>固定框功能

. l0 B0 J' Z* B$ h# B6 o完全正常了,效率好高,大赞赞赞赞!!!
. K9 q* W6 e! r8 r# h5 n期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
" [- Q9 R9 m3 s; O2 G- t: v0 {这样方式如何
* A; c" H7 o1 Z  [, i; c+ I2 i2 |& W/ N) Z% m" `) U0 d
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
) G7 k. L' H$ o
整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
" K1 v9 O" c! R, j3 ^; z( \完全正常了,效率好高,大赞赞赞赞!!!$ A6 I: ^& {7 Z+ L# U; ?! P0 m/ a
期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

/ ?* U0 Z0 j* L! G4 F) `) l" a想法
! p; w6 I3 e/ A' A5 na,b,c,d指向同一张图
4 }: a8 n7 A' X0 va词存图,设a为跳转目标,b,c,d指向a
* U) p0 f0 E0 p4 M4 }------产生对照表---------------
6 E: M( t! ?6 T& cb#a6 l5 S% F! l, x
c#a
+ B1 @$ c5 Y* _7 {/ e# M6 b6 Td#a
+ A& g- U! w, K( z9 N4 U--------------------------------------------------------
  Z* J7 D3 P2 ~6 K, v$ U; j. Q5 [寻找:% q9 I# Y( b2 p9 O9 `
(^.*)#(.*$)
, j) z+ S5 d  e9 F' x取代为:4 W* c0 K8 Y( C+ j
\1\r\n@@@LINK=\2\r\n</>  x' K: ?) I+ [  A. H
-------------------------------7 a. t9 A" \! Q  \! |2 l
b3 M! `' x/ x3 ?6 c) ]1 G
@@@LINK=a
* t9 }8 S  f& i9 W2 Z5 q! o+ g</>
7 ~/ R# X0 m; J0 r$ l' _c( P- j$ _& h, S0 C: x( i
@@@LINK=a
2 @  ^' K2 n( |9 |2 H</>  `" x. N1 w% |' n
d8 H: g( G/ z8 x' G7 x& c
@@@LINK=a
4 A- {1 O! V9 {</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
. C$ d& a' a4 ]) g1 L这样方式如何
5 k* B5 O" r! q' _# Y0 e2 n* L# D5 Z2 M4 b) m& b
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

+ p8 W7 g+ J: P/ E这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52& W2 z, ?9 c0 m; p- V, O
这样方式如何' V; Z2 l9 |2 f2 Y5 f2 c  y0 }
" H' S' p, A; d2 a1 o( K  O7 b* b
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
( N) M  O& [/ a. u- G. G0 z
默认的情况下就是你说的这样。
( c/ m0 p3 k  V  T之前的测试文件还在吧?
# P( \7 F. M! O; O9 y: S& ^输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。4 x9 P$ F9 U9 g$ _/ S0 h" ^
单击这儿的数字,会自动跳到垂直 位置
3 }  P& b, c$ {单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
  Q+ q) U: S( W9 L8 h这样方式如何% ^* [& F) `* v9 i
7 ]3 x; g( w$ a+ I4 F2 @: o
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
$ e+ M% l* M' w  X1 F6 c2 s
最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31/ |$ F4 ~2 O" y) ]5 D% o
这个可以测试吗?

8 @& Z" b! _3 _8 e用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00
' u# V" K, ^% b最初加载的words列表如果也有极少的缺词可以手工加入吗?
. B2 }) G2 n: z/ H- ?' N
要等更新, r0 B0 @* d* U4 l  b
用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:117 u  A3 C) ?* ~
用法如上所述
2 b. K. V! \% ?( N( u5 Y
万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58
+ c( l1 E& n( O. V8 Y默认的情况下就是你说的这样。
! b5 C0 n! H, D之前的测试文件还在吧?$ Y+ a& J% l; n
输入YHCD_001,你会看到完整的该页词头索引,按 ...
& j# S$ }  F2 S8 I4 B6 M2 T* o
等你实际做几页,看看效果如何
1 H: S# U- }; r8 L( H) U6 x. n6 t

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
% e( U& x) D) I! ~- x( z/ f- L用法如上所述

( O6 F8 b, \0 u  Y/ y8 V打开的图片文件名是否可以写入?
% d9 j2 {. G8 B0 ^这样方便后期编辑。& J% D# `8 G1 X# a! b+ a+ ]
----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:272 M& |* t4 q( t0 P
想法0 `6 q& z7 m1 E$ o, j; P1 o
a,b,c,d指向同一张图
& C, U. _) p& H, f3 \& ?+ _  ra词存图,设a为跳转目标,b,c,d指向a

! {5 Q1 O/ u* x# ~. j% A5 r, S% ?想法好!集成到程序自动完成就超级棒了。
3 z( D! k7 P9 o  M! `6 Y不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。+ L( Y# W* h5 z4 O# q

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-4-29 00:14 , Processed in 0.051962 second(s), 5 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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