From 1214da13d2d16e2314e9f095fdc349b9291d67f7 Mon Sep 17 00:00:00 2001 From: "zhengxuan.zhang" Date: Sat, 14 Mar 2026 20:39:34 +0800 Subject: [PATCH] =?UTF-8?q?#0016=20=E4=BC=98=E5=8C=96=E9=9B=86=E6=88=90?= =?UTF-8?q?=E5=9B=BE=E5=83=8F=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XplorePlane/App.xaml.cs | 1 + .../ImageProcessing.Controls.dll | Bin 0 -> 16896 bytes .../ImageProcessing/ImageProcessing.Core.dll | Bin 0 -> 13824 bytes .../ImageProcessing/ImageProcessing.Core.pdb | Bin 0 -> 15608 bytes .../ImageProcessing.Processors.dll | Bin 0 -> 59904 bytes .../ImageProcessing.Processors.pdb | Bin 0 -> 27760 bytes .../Services/IImageProcessingService.cs | 1 + .../Services/ImageProcessingService.cs | 7 + .../ViewModels/ImageProcessingViewModel.cs | 75 ++++++- XplorePlane/ViewModels/MainViewModel.cs | 7 + .../ViewModels/ProcessorParameterVM.cs | 2 +- .../Views/ImageProcessingPanelView.xaml | 184 ++++++++++++------ .../Views/ImageProcessingPanelView.xaml.cs | 40 +++- XplorePlane/Views/ImageProcessingWindow.xaml | 11 ++ .../Views/ImageProcessingWindow.xaml.cs | 12 ++ XplorePlane/Views/MainWindow.xaml | 13 ++ XplorePlane/XplorePlane.csproj | 7 + 17 files changed, 293 insertions(+), 67 deletions(-) create mode 100644 XplorePlane/Libs/ImageProcessing/ImageProcessing.Controls.dll create mode 100644 XplorePlane/Libs/ImageProcessing/ImageProcessing.Core.dll create mode 100644 XplorePlane/Libs/ImageProcessing/ImageProcessing.Core.pdb create mode 100644 XplorePlane/Libs/ImageProcessing/ImageProcessing.Processors.dll create mode 100644 XplorePlane/Libs/ImageProcessing/ImageProcessing.Processors.pdb create mode 100644 XplorePlane/Views/ImageProcessingWindow.xaml create mode 100644 XplorePlane/Views/ImageProcessingWindow.xaml.cs diff --git a/XplorePlane/App.xaml.cs b/XplorePlane/App.xaml.cs index 5c3be5b..07dfcb3 100644 --- a/XplorePlane/App.xaml.cs +++ b/XplorePlane/App.xaml.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Windows; using XplorePlane.Views; using XplorePlane.ViewModels; diff --git a/XplorePlane/Libs/ImageProcessing/ImageProcessing.Controls.dll b/XplorePlane/Libs/ImageProcessing/ImageProcessing.Controls.dll new file mode 100644 index 0000000000000000000000000000000000000000..93b6866764845f70fe74ac70fe6c405f3d4889dc GIT binary patch literal 16896 zcmeHueRNz`b?-jsj_!PEWNRdU#d183Wk-?Zv1EB<%ZY<*Nsa~nkoDojAw(W&uH}hG zbCtOxM~V^131lTDX-I)mQ_@EWZC2h}X+nX3`^q=0meLgR0(}XkJo13IYIrH|D6G|j zt@qpe-uaU3K+^uvwdj@azUS<-&p!L>>~rp!>w~wxn+ziI;a*rE`V^jgbqjoTFpuV% z^?zPN9}hma;Zy3sa~p%jLg7mfp8WWosVnkTA8v3i7PxPbdjp0T3nLLESTe_6kH-kQmy zKGO++Hqq6S8#TFNkSd;Ya^t9pY{yYBaqq%ic6GyD@tl>hLCCVwJZ|RIjl1mXCfZw8 zmEsY$D=wBzQx)~bAS4E zk8RkSiWtM*jB*IVU5jUROEjvRnox?64mJf@5dsFr3~l+rca}xvX%_H1%xXvsp>$hNjn>WcUpnjWY}Bq$UV(QK)`w8ZGs~1 z>Ddpl5@>%)efK;i2*Kx~P@CQQCi zB-pwPR&9a{%`ol!G9>Wmc304CS>>T`tU$M@Rdv2vpUWfc@;F=K@rDZGx~kf$)@mLN z^Aw}C-0JbflqnOb6_NrIs=s8ksFihQt?71(xSe1=(WA0coxfJxZ#2~inIFCD0=0pz zKW3YjnZxgz!?2NFLrq-(@K9Z_HrP5>bPqSVF|))e^-G)rua-H*bHrxP5u2KjtwQ$o z0JLef4cmvPuG~AdAy*zkq;vfE=`Nn}h#vVyPv@u%Q+tFw%;W6l{T_*h~|*PeC8SHf5}AlF`a|l z=@2)XXQcI#iELv!hZ#S>c)#Qdx0h@10*2{5Omzzdn#Biig%AAfgF4R#As*A1LxeB! z0pl*`gCf4t2ZFBfL8JJfh_Cd4pqKdI1LycUU+}?VOD}aorR}kzm26)*LUmN;!NSt6mvt zxjGR1Kph4@!}KzCX^U@jeM^;0`b}HR&AIc4 zyvm>}hVrlRRKcW6OoSN>6A8RzHn0k%tl;9^Z5QUflKms*1NIqbuv+^j+`os*fD_f<{NT#sR$$U^Y2Pb$0m(GTg*!HnL z4`VEZJdY()dID5YYC4GrY;qUS!pB>+7UcTzLd)_pd{Z}wt38C5D?P%u7YP|Jgb_2a zBWMOM8Cb}9!{F^l+{9$ds)g0HXpwJ00!||ps!0xE)mA+S!Bmr{8q;~Iy?VEmSL#+A z7QQy&m@xZ1{XrOV=KIoQk2BU22ly+dz= z@v&jRg?ORU+v9EVj<$|=>@E3C0D{r|m`fYqM)c2kK7&}>IF!$&vl9+ed<2WhE$F^+ zWQcx+H3L4SjW><-BSBI%rhO}B{l>i+8}nH%jrhEI)wAIsrV;(C>L6H%N5@hp#|2P= z*5gL56Fl^#7TmCz)S0$$bE@GohL9&_v80|Vua46JKeu!6e6{NRA(J{yhQH@~M`#%} zLIRVFs;5ko)|p=lnDpK%hDQWu1^!6j|MfAxODG!zeoVOegxjC^m}h_W7-&ugKZzHz zXZ@cG*U(gGSJ0#{1;+wW`i^nVFsVlF)7jPxLPkli}=~uyXhC@eT z>8t1usynJfbYtXmVUwn%*X_RN!87FNvEshC-=r4+Lv%FAe2#%KM0v%%X2PEfUqugv zxqOr0ZwCfC8r*lizy~9&S3LMMV2y7qa5ep*{vfRJp72;8MExS$4+7llSDJf$-(>tc zk?O;MSJAZs9|AP#j}+6a7S25a?+uIvuA+|cQ|c=Ek;(Aq0>5f9eN}|HeZ#mOGJjHd z4v6G`BD(xk@Fb)6fpds91h0oip9!)?KNH#h4y_@Y2r-8T(95L1f}A0GJiz>a32E8) zACVB?7(a^_-V4De!hI<7-*S4%|3vs8V#Xi?ZA{pQD6EqjM`9o5#7e1cky;I{ky?+` zYH6+1j!CVa)?r%D1T$LEj?fg~pw4T9hKw1&V347zek<_*q~^6rZwcNDn2g*H_-Obc zz+Hhy7L^Ag?^}c^r*!*Xp3guGLeV3ERPX~B@x4;}eR|paFQ|P(YWD>;>W^qm)f<@d zzQ9h@4BF$?RwogoJ~}3~v(yyf+Wk`dk{W)hHV)IwC<%(eTdIrM2Arbe$e zfEf^`{Zjis>LqwOO!HEESq&g2!}O9%DLO>x`%=4?vh)QVp#e@NbT9p!p3}?dM^d{_ zC~N7Ty|(-5o4S@-T3yOz>YKWb#-!#_uAq$9_8IyIy@D>4wXGsQhYCjc7DiY_JyLV~ zt)T;6+vAXB4L#%4n$>d}yCB5hJ0cA4!CF^<{UI*zLL~n>_z#M+-#yh#*$t@a1H$Lu zyKK-Aydfk*3enC{vIa1OGrMGHIkgMy61YcTzrZ5`j|of)ObfgdP|+;l3d9b>$LMbO z@I1;UeFZQ^LB-`-z|C|WU@N6nyU_)Be`GH`0-F7p*`GB=P=48bGd-a0H8S*w`hlK7 z`F=A)=Y-qyv_7(&&Z#FOze7*b&-KIfn0i;>NqSOoM17RrXgm%0F9C+jsy~LAKNR{R z)zd50F91d&FVaWVMP%^{6fj<-=Y{75N}<Unyg zIso{vxlBE&eyHlz1$vipl}fAkMPexbJlqV(Bc4}}MYbxX(~<3<|2w@4@Gs3h>LnSa zT`X{cPMSy52EEc4QP=5oU>W*O19P38mh!NaZ^u~eDi>k+guYdEN#6(PMe}LuQfz^* zDDp2;Ur`^c9#swCKM4*Om814(F8AwkJ*O_H7tP;QO8Oqr|5E)Z#yuPOuxbSTpQ@yO zyZ*RJ3w=^M`ZK^h1b9s7@6<1bpI5W`hw6W-v-(KjQT2dOp4Bz_+iDGHexc6kuU21D z4~TZx>0xu3eoTK|*XawM7nX(A=q|M~@-$sgRlaNWS=}8tqRzu^9r|U+_B6c=e4pN+ zKd27q4RnTHFs`Ljw87Ub;Ja^f2I? z1V1G3&GbcJ#sT*Tw;pn^g7=`j)^{A`7mVZdE_%sGN^8<9zlWl}d1;*&%)J617x+bi z-xElRIT(sL#8Cc@(Jk<}zcp{s8&cKy5j)xfU$eL7d)i zpueEMp%dx}1%-qbPK{*w_$~!dIWu|Ud>yv3f#EP2#!ZCUFVkcJ)-|N zMyTw2tNzo=(0vfu&ApiCUm;K8_)(;N1!W&JsltsN9?rrH$YM|zz0>V*!;RykqrGWo zDwCY;$s`@8y=}COmSWp4i`{lvY{%uWU5xC>S;@TBYfq15tR6d?&)Jz9$3{yndu=;o zC9{`n>d)q_2`hKGrXG88%-(CyT&`^xzfWDEX^9x^1p$|eQEXZ&Mmrsv&Sa9%=y*E~ z+S7R}HITEXtXzJ!=VUTFVWs*`TiN{nWHyzta<59WCpY1M;6U2R<1uVwu#RnX!$CVW zow07Dp;;$yO~!9dXH)iFPW+&iN+%1*9y^n<#`9@A>%?!evQ{oVPUChq>*D%Tv?rCK zQDE|r<$#?`St&}UQlm$cnQ69Id#7ju{rB3L z6piH4Z-QCa{(#JOpPjQNa#BTnOeJ$x-^{p3PyN}`_9=_{IqYqRISHeF=V;nVb8Xmm zV}k~#v-$L-H9R|Ix&EV@tUTBD zsjR&)ID#rQJ)SRhELfM*C+2CXq0mF-Pj^Xaj4CY>*9<)D;6mU-xw7ufc3Vsm~%+XR)#P) z#!n3-vnVc|wX()J@l*zMZu-6@Ihmo$EQB7ea_#Yum8%Z9vqo5Z1f{I&uBuSLOF>Io z`mu&M>}xE(NItS46sxj6L%;I%)EmOf90gKj)a0b(O?SnxQp{KkT7hu27CZtVJvr^t z98Atgc^C_~tog#K=VUsQLN;^BF)`Cw+A}qkNsmi37fg5)4$+dC^xYLm%nNVjB9^4I zAks*GU&fk*zshhNkiC{Oo=Z>h^s30(<@jNH0@;1Bms^du*K zJ4f+xhOTxf^cUw2;)pjV-004W-gI&zYdiV$xKltCW_m%3AuD$}4S9;~o)MiZPrM0y zQRG_sRfr1SapI*?shhjjAgl0ncSy2FNrplIc=N)E59HF5>3sS$lPuaxiKlpzx5T4@ zEOV#SZ@6*$=x83_qFqtFf*}?Q;qGU6q8BJiq3=lJVF`POrm~r$#~pEUVXFrrPhzW; z#YTqqAx+$Dr6*42iwwOXIfGzw(&4c?;LXBl1$hq2tcYL6>xfM8KjksYt-MV5(kP`V zOU3N#&0(S3Z|Bl?L#AYAPbNK)<+&~4T8u92@!$iFc)VwL+1kx8Zr}o$`*PNu(^htTmQGo-(p*?>$(|bRyK@@C=Vz(k;pO>ou5WS*HKJqvG)YOCAnXPy zM>gJdExc(vl*Xyv1o1n(jZ$9PGQh`aP$+Dg2F|6v9FDF%gr1c=ZS)vI?+os7@U$p} zpCAULo&;~K(Pgbm`;xH>Kb-8NZTvDi|IV%ST7|zJ!`e`IN|drhv8||;E6zer!6Z4{ zlMsi+WJSx(5T_Yw%@D2F2UBG{s$m?sO@W>szw4*}+ zcdF>LUQs)XM|4_-`6dLd3B<^4Gu;Q*K~zVkOY4jAX?~3Ka(_6Qj?QWCil(aw64m%) zJ{7^`s`E00t(||xt-QjTN1$^cIwu2uB1lkn{uB5Iw(Dwqq_n7awu*a1&jzLA*$68c zi%v%8FmMB?A`Q$+yRB;=>DhJ67}~84qQR}ZEH(uFzUcDkWF$I=J~cH#u&R&FpOva& zX1W2Yo!z1|B!iy9K718;}RK$y(KlYwade4vg0$>$T z-r>~M{5#OFUdelCyqV!`*^)H^`)|AiD$u#VAnsPQI)12cm|sA#H*58_;k!@ojN`+L z;hOql#x8s54RDVbDAu9(m3GPaJy%hcEVuZ@6yvqy2Uz?ObtsBUrDd!$xg*)pl^W}? zx;j#c#MoFWxqVxES8|)Rvn|=aqjTrB?d>}f9r$!XQOH||b})}Bg>yaf@d+7mPrH@sHrncpIA1 zUZPMM#EXoTYmH4h<905S9&3#ijK@DUmhs zn@l?K$@F;6cI*@RIJQDt?@DJ+%xvA(*4DXo2Cuzar?9KWj!WL#ki#$`4IED=I6%dF zgH?3MGX%dTzYY->YhAxf&9uH28C|ieSS*e#7OVb^dUE{wMNDwQo1K}=xCc2-+|EsG zos`|~7AQUi4c%iAQND~P(znaATcx%wVp(ZBYlf}G2S{6S7?w>jr=4Y-us{o^`2Sl- z@UQ#)8-Sq~Xgxlr!J}r-zN^4f@&@_RmWQv68N~u?~xI=aOf6C zYh0&kRrv^ICkYscJCz37hJo-^kYLQvd)RdI^YaUhp@$cIyaw-HNHDQnr6m)H!* z+}T=$6#XB6y%b3ythZkNeLQx4WY^nMEPo4bY?f&AZ}`Fl^5)xVk;JO4M^nMd!g+isb{k*bB0 z@T|2ZWt}ds#}}>Uw=JskA%LuMx7lNN+$I~p+p<<3tMnGE9Q-5K6??>|Qe!lmCFZMNGTqQdQni| z%10OOp#*-h!x6^`99{6$h&>2@4ax@_I1$I8MH0srX*t*s0(!<*4_UF}1wQAU04?S8 z6AY}Vt@yW{#!$xh4@loi&Wrefg~ynMM(!aB^M9>}HQeV`;aQNO7e^}&j$&B0sS4R& z5AQa-sH&o+j><6)pL_8^4`1y#>uM|BEXz93vqjw_p)7RElxg@{Wr*YSD}z72n&3@^ zw;cRzD_r^1Z3^~dO(*CiMkL8HV&$%(0H9z7wa^yD2#Op+$)fi@wBQ%*=~_jm92 zjdtY+c{G3YoMxoGb6?;6?svcY-S3;(-FE#0WD!vapEGBOK7~79?E>E#Oh8;W|1)*; zcai6tK4oluzNznEu9O-r`oqQSNNO-!DEQ^nfR`$c6;ioEs%uAYYQ!J%GO<{6kv844 ziD;`~(G~kTKOgjViWa15j25B{IJV*rY{fl=Pd`3H^@5wqZ)ULnay=cLyW=L_g&~oPA9Y)q)q=LezJ*?5*e&ky|BqL2s_2GiC4gGU$WL0U(pH zYQI6rm4a89VyQR?N_^`F!UIKUs;_oTSElIYeJHZ8G=UG>T7^&5)lRgriWIa1Xuto(>7wHO=HKgD}|= zrenCn^*GIZH&Vois$0#>cf*KLt8OtfK?x&aCMgGxxe1lCBxI<8D0U#og4^tQ?D-@`;-*8>Dn%Y|vNXSmlVcSBVI`gx3C*26TrfQhA zj(ysUMV2q9jL@+$zL1H**vl1w#E%G;2&Lyi#jg>{o$(mYrXLe3qN!<2X;_AYdS_N<$DZFc8JiNE(S9rDc$yswjydV8CO=5CjY?Ud0du42(oE1OWqi zp%{XIfzc_3Aa9y?rqJDC?m?q$+f+`FS!#kbjRdxVFJK(G2HZ!aY*OnXL?H|x7O+eLIaI<;vsoCv3vqS<-a@HARN)rj6NlZtwVPJGk=WJDap4culoRd>B*D*>Wai@XiAzY0LxE3F2e45RwMsB4YO>rK`Yi`&cHxb3fF@23gDgt2F#%otRpr;xIc+~b~&NK&!gvsZaPGNIS+_?e$RL!!Zrpir*Fg>AV zWS}^ibSq^(L|EF4-$Xk7)hw6ZxSycx?z(9-?Ll7|P z0)`-9pd=~{LBK$PRSZFb3d06rVR$d&`hxa61}w=b^(CO+ zs=id~_?tM~s4rLH9@H1%p}t_@aeY~io31a_O{?n5Icx;`JoV*ja8-S&ZlGM?`m&jQ z3F?bDae?~6j_LYxR*s_M-3eKX>ukr0fyX{3?bYd7{@ zv(eC}UaSW?v?|k*X=`a~g?T;^r3>V%>^djzm8U@~4F6IiuCDs_lA+Qhkh1d4d zbHK4cY2nq^cB7im*FdMkpf~3I0nmJz*e~|XeKZmYfq2ts=NLZTihzNtEYw*Di zB4=|}djKEyjd7MEb-BJtJLbVAu6YjIVJk<&A9Zc|FM+p&9&)GAS5SU!IvM(`ZPQEP z#~hpb1jYqs1U@D3qal|5QZ!!_SQ0zW3A`)BmcJG0cB0fwUxgQ$XlKM3yZBa!CD=C(q^4ACR=WcGQ1Md zrWVneCOO!G|>3 z4GGbE7{EJ&ju`c{-+jZ{B$RG6g!_WJ`eq` z8z%uBlVOuUW&eHV7r@CI|7`Z8c$Dvl=g)(4zor%$&zmN-G%4AQ^gYv}yr$}-KQlvA zyFkfq#<|L&_X~Be+hzY8d-=nf+G!sH^@OJ01zChXuBl^?Md(wSN<$W<6Pj8BS(Lu4 zsX?dCs-YJ&RdSM`zN4wTA*-byXzD@8YUve4%_;(f`=bXeIa}#a+8&$ z52|+b1l?pc&_@@s_+I*ZP}Auk&iYIpi1^kFx?fY9+}lBYOH=FIJFQu?Zi&*2y6>=N z)3Bmkj?x_B^Ei=;(j2;7%Q#AnG@)f2rAE3>Qyita^j=MIl;+Z3=yn{XdGx53ag^rK zQ(DGRnopn56h~=3eO75oBvR}ME)|KC;6xmWqgIN3t=b_HN3ABR#gj-d_65|UDIWU* z`V&p@*cZ`@n&Po9rW$N`XeVP|LPx0%(TCJ(? zTgO3Np{WM@32PZ$rKx%LQ=oQestdAa+M}tRkTp}krrrhFayqD~V~{PUTQ$Y=u!6=l z#q+R&-ma-+hTX{r(!?oy~0tRm~;&O zSo9x&Av$c=*N5pQK${*1bm$GIzTTzgNQ6qRfn9+s(QLpdEd{K{Zq9JMzz%`k0(T0$ zPGDAGPT;M828{zwN1bN)B%n>72E0f(DeO0&urH?uaJFDa8+UhMbuNj%gO(a4_ZTgr zvi&F^>okf^tFbKlHEK2XJ6{9mb@LT^hz>`8PWOrB^~TZY>$F_(RRTBAu)W&YKn?aQ z^a34?t~XvFKYF>*Kp&z_fHz0Cfb$Ky5%5L8<7kyNR#Ce%4CyB=-&jPJdxz0sv|^WD zM6cO5g7cHejgYeDLx9KNf7$-H@onJG7%u~U)`%G8$VnqBts3YD^j)Kiz90EH;145j zpqHc3GsbfIu3Kwvh5meVIo%Y^0Iqdbnd^-&MlLhQ5rKMojk>KZ=6%NJtX{KGd~Ot< z8^yO;@hw4Lr-$$s@!NoP^b)2&K`#SuqPyw!P!k=cGodAP3(XH_sD`G6GN{e70O!zJ zz=hNf*i3f$@CN!3ID>#~^fsKPI>dg5*zcqgUUzkZKRetj z(yU0cB0VDb5y9^k&AUbOxbTk)|1se|Cj1k^e^x{G|D;Gyiu9E5U)GSNWbjB04VjY? zyh%gmvj19-G%UXcnM}ePlZDivUg3oteNJ z0Zlw@%m%&$(8Sqf4)CRbCf?`F1>Ov3qMpwOz5>w17fVgRF99_1Y_bsedO(vdrNzK6 z12ky^>=|@9ph;K2o@C!qF08fE@P1XCc zkW+aGxxTvTD}s%v`}VPXK0A>2`dg`cQ(p;FNOsukUrAlL z!E(+oWQ*euj}(cT$_JTUMfUjl@nOHf+&)+%3)b z3cOBWSGJrLWXD)}bgV2So30{z$4g~zB-82V^PY^al)2g~c*We{6c@Mq#gS}2cZWAb z8_?$!x9s1)F*|q*UUgiR^YUO;Or9(2F73{hatQXhqV3s{^KiRzrO|wL{QSb*+5DK- zH$Hlvb|N~rlWktMa3N9df|Bg*7jCoFAHJ;_@+eyv)&_YF#g-tP-&K<`m^!(MS?(Z5Z?#)}&+`6HvbyjPU91IAEC87~3{#voEHIKmZPP<<+# zbL>_`9i@^tGLRqd%ayBb^ks_}^i`Z2xB10eD*C-+qoaNiKJ4i2$!E(4uyiXz)#_Y+ z(8*O8#cre;lDpC<5Ox>Xm}Gu7e?cvjzXQ49v7+czjO_9b^kxrup_b&M_ZDn4e0+Ac*LXe>qVR1TENdwlH21=rj_3IX95Y=gL*m$rP%jkF1Hw z@*(^R#roTH{ZOKS7zq$o*_+WdAUl@VgjmtFMp+4nkpPkW6<2yufzMhK z89fh3XHqYp1BI?)_BQ5j%a#vH>pi(4VBih;w<%n29GPp&xx88jf>q~#uuL*T`MfF- z*e}G7uc!)07o0k%&jR3O2Frdi*i^X(uVbL3G%E*$VANf?>~O)CGef}A$%~q$ zN=>giZ)I{S+i^f{C5|RGVqKiM z#O@fl8QTv}6VHxV-|Xdv50+^+_s{K7g|uw;ZbIDh0+#p9F|AN$sgU{UGQ!lLx9TT;#D{Dq)=jN)5s_wU&&qg-B~w2 z2k=)SkIF>T6mJ{hoeiA3@6o$3E9Ap0;AKSiNIc`i^f))P_=cX2M8grd@~jS+g!N z%a(iN5(fi}dqzArb(or(WZOy!Moi0&=kO?J#&hwUgen(L8LXeAq}&lK=;3MFG+fsK zWI;4VfldTN6KlcI*CVc|g(4@M1Ph1e-8?6N;0c;$vMik+?lKgNv2EHs#&n0Q7;fWR;- zDo##(8l75>!QDfOev|A4S#`L=j%m&#{5xbM#^V#u;#9BYLHn}<8_b&;s1pR% zai6|&|6TE~M=y1YM-syep6XhM=V`qCwPUWDqQopm&lT=6Qz086unVu5wm-?x{e}}{O^LA+i{a@zQLFWlBJrIvn>#Ugbyzn#PgEQvWn9f{R1*kZBeTRO zVF`w%0r%=vN>tX3H0Ho^TGTb#Erv0V>d<3iR^6m>5F~h$7-w%1e4YYad z+lE%J9vB$Pu3Fi;KD*Le*OF~ryJp?WRjq4Rx1nSj6jk-Rw3cmz_yt4Qz`F>-IMjvy zKoY+7WQl^HA;+(G^!3F18$LqDwjNgG?}PVl!3RH=2`;w9-_P+EQ9p+4$5k@c;qUva zuU)-ey<1xozwFsJ=b9&*hIZsnmVe4Nx-Q+fcQlWH;#6MnRt$NEs_D#G0o!*LEzdCf z{DGVIN&NN|yfPxaLLEm+=he=P4h>N6=8l!C*N}GT&86BQ40>6^dq+z7x4-Y1H-?*j zx_WD62s;>0Rp@H0qe_oxKk}n1pWlW}kVZ;_7@H^ON8RGgVwgEQJk{3zi2t970RN7G z@cxk|rn)4nhOoTO;j`XmeD?Me-7oL%n8Wxgz}?hK`vEuMw|KpB+Sv}eo3`Vv;SSOJ zT9yf2(MKV}Re~@SE9A*c+iy>0=xt z%7XI5d^a$>iUZXH>pl$v!x>ul!`~D6;49r-Vk;O$muL=(Poq{le=FVzw@iKrbHi_xIf7-;Ex`MH)rfxEzB4q0c6o^b_8ZvT3VXw1jmJESlPpJj zm=2;RlIn83^u0s#c_z5;ARbJqsQx}asCiOzFhpaRhjP`Z2qXUO=jrY8#(S!*vm;xH zYcn!s4SZjVPaEF14}oq&EY<@K(Q5n+;BN@hRrnQGEBIO5J-nZ90oICkYk;qWl=0PQ p#n(ES*AB@g555l|Qsao?h5g`p{tZ{V`c2soe%t%U>;GQ_{s&s9f^Yx; literal 0 HcmV?d00001 diff --git a/XplorePlane/Libs/ImageProcessing/ImageProcessing.Core.pdb b/XplorePlane/Libs/ImageProcessing/ImageProcessing.Core.pdb new file mode 100644 index 0000000000000000000000000000000000000000..2c67e609f08795a7718d821516f55599cfb2e7ed GIT binary patch literal 15608 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∓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 BC7J*L literal 0 HcmV?d00001 diff --git a/XplorePlane/Libs/ImageProcessing/ImageProcessing.Processors.pdb b/XplorePlane/Libs/ImageProcessing/ImageProcessing.Processors.pdb new file mode 100644 index 0000000000000000000000000000000000000000..0c5e1a267fbdbe7ed42813a8c8ba8915591a1b6a GIT binary patch literal 27760 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 CXw19- literal 0 HcmV?d00001 diff --git a/XplorePlane/Services/IImageProcessingService.cs b/XplorePlane/Services/IImageProcessingService.cs index c9e5f12..45b4692 100644 --- a/XplorePlane/Services/IImageProcessingService.cs +++ b/XplorePlane/Services/IImageProcessingService.cs @@ -11,6 +11,7 @@ namespace XplorePlane.Services { IReadOnlyList GetAvailableProcessors(); IReadOnlyList GetProcessorParameters(string processorName); + ImageProcessorBase GetProcessor(string processorName); void RegisterProcessor(string name, ImageProcessorBase processor); Task ProcessImageAsync( diff --git a/XplorePlane/Services/ImageProcessingService.cs b/XplorePlane/Services/ImageProcessingService.cs index 57a5cdb..87b0e77 100644 --- a/XplorePlane/Services/ImageProcessingService.cs +++ b/XplorePlane/Services/ImageProcessingService.cs @@ -71,6 +71,13 @@ namespace XplorePlane.Services throw new ArgumentException($"Processor not registered: {processorName}", nameof(processorName)); } + public ImageProcessorBase GetProcessor(string processorName) + { + if (_processorRegistry.TryGetValue(processorName, out var processor)) + return processor; + throw new ArgumentException($"Processor not registered or is 16-bit only: {processorName}", nameof(processorName)); + } + public async Task ProcessImageAsync( BitmapSource source, string processorName, diff --git a/XplorePlane/ViewModels/ImageProcessingViewModel.cs b/XplorePlane/ViewModels/ImageProcessingViewModel.cs index 8856a02..d1b1028 100644 --- a/XplorePlane/ViewModels/ImageProcessingViewModel.cs +++ b/XplorePlane/ViewModels/ImageProcessingViewModel.cs @@ -1,6 +1,9 @@ +using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.IO; using System.Windows.Media.Imaging; +using Microsoft.Win32; using Prism.Commands; using Prism.Mvvm; using Serilog; @@ -36,6 +39,8 @@ namespace XplorePlane.ViewModels SelectProcessorCommand = new DelegateCommand(OnSelectProcessor); ApplyProcessingCommand = new DelegateCommand(OnApplyProcessing); ResetImageCommand = new DelegateCommand(OnResetImage); + LoadImageCommand = new DelegateCommand(OnLoadImage); + SaveResultCommand = new DelegateCommand(OnSaveResult, () => CurrentImage != null); } public ObservableCollection AvailableProcessors { get; } @@ -50,7 +55,11 @@ namespace XplorePlane.ViewModels public BitmapSource CurrentImage { get => _currentImage; - set => SetProperty(ref _currentImage, value); + set + { + SetProperty(ref _currentImage, value); + SaveResultCommand?.RaiseCanExecuteChanged(); + } } public BitmapSource OriginalImage @@ -80,6 +89,8 @@ namespace XplorePlane.ViewModels public DelegateCommand SelectProcessorCommand { get; } public DelegateCommand ApplyProcessingCommand { get; } public DelegateCommand ResetImageCommand { get; } + public DelegateCommand LoadImageCommand { get; } + public DelegateCommand SaveResultCommand { get; } private void OnSelectProcessor(string processorName) { @@ -153,5 +164,67 @@ namespace XplorePlane.ViewModels StatusMessage = "Image reset to original"; ProcessingProgress = 0; } + + private void OnLoadImage() + { + var dlg = new OpenFileDialog + { + Title = "加载图像", + Filter = "图像文件|*.bmp;*.png;*.jpg;*.jpeg;*.tif;*.tiff|所有文件|*.*" + }; + if (dlg.ShowDialog() != true) return; + + try + { + var bitmap = new BitmapImage(); + bitmap.BeginInit(); + bitmap.UriSource = new Uri(dlg.FileName); + bitmap.CacheOption = BitmapCacheOption.OnLoad; + bitmap.EndInit(); + bitmap.Freeze(); + + OriginalImage = bitmap; + CurrentImage = bitmap; + StatusMessage = $"已加载:{Path.GetFileName(dlg.FileName)}"; + ProcessingProgress = 0; + } + catch (Exception ex) + { + StatusMessage = $"加载失败:{ex.Message}"; + _logger.Error(ex, "Failed to load image: {Path}", dlg.FileName); + } + } + + private void OnSaveResult() + { + if (CurrentImage == null) return; + + var dlg = new SaveFileDialog + { + Title = "保存结果", + Filter = "PNG 图像|*.png|BMP 图像|*.bmp|JPEG 图像|*.jpg", + DefaultExt = ".png" + }; + if (dlg.ShowDialog() != true) return; + + try + { + BitmapEncoder encoder = Path.GetExtension(dlg.FileName).ToLower() switch + { + ".bmp" => new BmpBitmapEncoder(), + ".jpg" or ".jpeg" => new JpegBitmapEncoder(), + _ => new PngBitmapEncoder() + }; + encoder.Frames.Add(BitmapFrame.Create(CurrentImage)); + using var stream = File.OpenWrite(dlg.FileName); + encoder.Save(stream); + StatusMessage = $"已保存:{Path.GetFileName(dlg.FileName)}"; + } + catch (Exception ex) + { + StatusMessage = $"保存失败:{ex.Message}"; + _logger.Error(ex, "Failed to save image: {Path}", dlg.FileName); + } + } } } diff --git a/XplorePlane/ViewModels/MainViewModel.cs b/XplorePlane/ViewModels/MainViewModel.cs index a325af7..bd35a80 100644 --- a/XplorePlane/ViewModels/MainViewModel.cs +++ b/XplorePlane/ViewModels/MainViewModel.cs @@ -24,6 +24,7 @@ namespace XplorePlane.ViewModels public DelegateCommand ExportCommand { get; set; } public DelegateCommand ClearCommand { get; set; } public DelegateCommand EditPropertiesCommand { get; set; } + public DelegateCommand OpenImageProcessingCommand { get; set; } public MainViewModel(ILogger logger) { @@ -37,6 +38,12 @@ namespace XplorePlane.ViewModels ExportCommand = new DelegateCommand(OnExport); ClearCommand = new DelegateCommand(OnClear); EditPropertiesCommand = new DelegateCommand(OnEditProperties); + OpenImageProcessingCommand = new DelegateCommand(() => + { + var window = new Views.ImageProcessingWindow(); + window.Show(); + _logger.Information("图像处理窗口已打开"); + }); _logger.Information("MainViewModel 已初始化"); } diff --git a/XplorePlane/ViewModels/ProcessorParameterVM.cs b/XplorePlane/ViewModels/ProcessorParameterVM.cs index 116ffec..d8539f2 100644 --- a/XplorePlane/ViewModels/ProcessorParameterVM.cs +++ b/XplorePlane/ViewModels/ProcessorParameterVM.cs @@ -11,7 +11,7 @@ namespace XplorePlane.ViewModels { Name = parameter.Name; DisplayName = parameter.DisplayName; - _value = parameter.DefaultValue; + _value = parameter.Value; MinValue = parameter.MinValue; MaxValue = parameter.MaxValue; ParameterType = parameter.ValueType?.Name?.ToLower() switch diff --git a/XplorePlane/Views/ImageProcessingPanelView.xaml b/XplorePlane/Views/ImageProcessingPanelView.xaml index 7f70273..4948b1c 100644 --- a/XplorePlane/Views/ImageProcessingPanelView.xaml +++ b/XplorePlane/Views/ImageProcessingPanelView.xaml @@ -3,73 +3,135 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:controls="clr-namespace:ImageProcessing.Controls;assembly=ImageProcessing.Controls" mc:Ignorable="d" - d:DesignHeight="600" d:DesignWidth="800"> + d:DesignHeight="700" d:DesignWidth="1000"> - - - - + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - -