??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩一级大片,亚洲欧洲在线播放,在线免费观看av网站http://www.aygfsteel.com/wangxinsh55/category/49650.htmlzh-cnTue, 27 Sep 2011 00:09:49 GMTTue, 27 Sep 2011 00:09:49 GMT60Android囄处理QMatrix,ColorMatrixQ?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2011/09/26/359537.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Mon, 26 Sep 2011 06:58:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2011/09/26/359537.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/359537.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2011/09/26/359537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/359537.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/359537.html</trackback:ping><description><![CDATA[<div><div class="wmqeeuq" id="cnblogs_post_body"><h1><div>http://www.cnblogs.com/leon19870907/archive/2011/03/09/1978065.html</div><br /><span style="font-weight: normal; line-height: 21px; font-size: 14px;"></span></h1><h1><br /></h1><h1><span style="font-weight: normal; line-height: 21px; font-size: 14px;">在编E中有时候需要对囄做特D的处理Q比如将囄做出黑白的,或者老照片的效果Q有时候还要对囄q行变换Q以拉Q扭曲等{?/span></h1> <h1><span style="font-weight: normal; line-height: 21px; font-size: 14px;">q些效果在android中有很好的支持,通过颜色矩阵</span><span style="font-weight: normal; line-height: 21px; font-size: 14px;">QColorMatrixQ和坐标变换矩阵QMatrixQ可以完的做出上面的所说的效果?/span></h1> <h1><span style="font-weight: normal; line-height: 21px; font-size: 14px;">下面分别介l这两个矩阵的用法和相关的函数?/span></h1> <p><strong>颜色矩阵</strong><br />android中可以通过颜色矩阵QColorMatrixc)斚w的操作颜Ԍ颜色矩阵是一?x4 的矩阵(如图1.1Q?/p> <p>可以用来斚w的修改图片中RGBA各分量的|颜色矩阵以一l数l的方式存储如下Q?br /> [ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t ]<br />他通过RGBA四个通道来直接操作对应颜Ԍ如果会用Photoshop׃知道有时处理囄通过控制RGBA各颜色通道来做出特D的效果?/p> <p>q个矩阵寚w色的作用计算方式?.3C:<br /><br /><a id="url_2" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_12713816310wSz1syZ.png" border="0" alt="" /></a><br />矩阵的运规则是矩阵A的一行乘以矩阵C的一列作为矩阵R的一行,</p> <p>C矩阵是图片中包含的ARGB信息QR矩阵是用颜色矩阵应用于C之后的新的颜色分量,q算l果如下Q?br /> <br />R' = a*R + b*G + c*B + d*A + e;<br />G' = f*R + g*G + h*B + i*A + j;<br />B' = k*R + l*G + m*B + n*A + o;<br />A' = p*R + q*G + r*B + s*A + t;<br /> <br />颜色矩阵q不是看上去那么深奥Q其实需要用的参数很少Q而且很有规律W一行决定红色第二行军_l色</p> <p>W三行决定蓝ԌW四行决定了透明度,W五列是颜色的偏U量。下面是一个实际中使用的颜色矩c?br /><br /><a id="url_3" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271381666y9yeN31S.png" border="0" alt="" /></a><br />如果把这个矩阵作用于各颜色分量的话,R=A*CQ计后会发玎ͼ各个颜色分量实际上没有Q何的改变(R'=R G'=G B'=B A'=A)?br /><a id="url_4" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271381693ZrrIsDUa.png" border="0" alt="" /></a><br />?.5所C矩阵计后会发现红色分量增?00Q绿色分量增?00Q?/p> <p>q样的效果就是图片偏黄,因ؓ<span style="font-family: arial, helvetica, sans-serif;">U色和绿色؜合后得到黄色</span>Q黄色增加了100Q图片当然就偏黄了?br /><a id="url_5" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271381725l0fGeSkP.png" border="0" alt="" /></a><br />改变各颜色分量不仅可以通过修改W?列的颜色偏移量也可如上面矩阵所C将对应的颜色g以一个倍数Q直接放大?/p> <p>上图1.6是将l色分量乘以2变ؓ原来?倍。相信读者至此已l明白了如何通过颜色矩阵来改变各颜色分量?/p> <p>下面~写一D代码来Q通过调整颜色矩阵来获得不同的颜色效果QJavaCode如下Q?br />复制到剪贴板  Java代码</p> <div> <div><span style="color: #008080;"> 1</span> <span style="color: #000000;">CMatrixc: <br /></span><span style="color: #008080;"> 2</span>  <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> CMatrix </span><span style="color: #0000ff;">extends</span><span style="color: #000000;"> Activity { <br /></span><span style="color: #008080;"> 3</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;"> 4</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> Button change; <br /></span><span style="color: #008080;"> 5</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> EditText [] et</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> EditText[</span><span style="color: #000000;">20</span><span style="color: #000000;">]; <br /></span><span style="color: #008080;"> 6</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">float</span><span style="color: #000000;"> []carray</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span> <span style="color: #0000ff;">float</span><span style="color: #000000;">[</span><span style="color: #000000;">20</span><span style="color: #000000;">]; <br /></span><span style="color: #008080;"> 7</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> MyImage sv; <br /></span><span style="color: #008080;"> 8</span> <span style="color: #000000;"> @Override <br /></span><span style="color: #008080;"> 9</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onCreate(Bundle savedInstanceState) { <br /></span><span style="color: #008080;">10</span> <span style="color: #0000ff;">super</span><span style="color: #000000;">.onCreate(savedInstanceState); <br /></span><span style="color: #008080;">11</span> <span style="color: #000000;"> setContentView(R.layout.main); <br /></span><span style="color: #008080;">12</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">13</span> <span style="color: #000000;"> change</span><span style="color: #000000;">=</span><span style="color: #000000;">(Button)findViewById(R.id.set); <br /></span><span style="color: #008080;">14</span> <span style="color: #000000;"> sv</span><span style="color: #000000;">=</span><span style="color: #000000;">(MyImage)findViewById(R.id.MyImage); <br /></span><span style="color: #008080;">15</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">16</span> <span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;"><</span><span style="color: #000000;">20</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){ <br /></span><span style="color: #008080;">17</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">18</span> <span style="color: #000000;"> et[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">(EditText)findViewById(R.id.indexa</span><span style="color: #000000;">+</span><span style="color: #000000;">i); <br /></span><span style="color: #008080;">19</span> <span style="color: #000000;"> carray[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">Float.valueOf(et[i].getText().toString()); <br /></span><span style="color: #008080;">20</span> <span style="color: #000000;"> } <br /></span><span style="color: #008080;">21</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">22</span> <span style="color: #000000;"> change.setOnClickListener(l); <br /></span><span style="color: #008080;">23</span> <span style="color: #000000;"> } <br /></span><span style="color: #008080;">24</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">25</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> Button.OnClickListener l</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Button.OnClickListener(){ <br /></span><span style="color: #008080;">26</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">27</span> <span style="color: #000000;"> @Override <br /></span><span style="color: #008080;">28</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onClick(View arg0) { <br /></span><span style="color: #008080;">29</span> <span style="color: #008000;">//</span><span style="color: #008000;"> TODO Auto-generated method stub </span><span style="color: #008000;"><br /></span><span style="color: #008080;">30</span>  <span style="color: #000000;"> getValues(); <br /></span><span style="color: #008080;">31</span> <span style="color: #000000;"> sv.setValues(carray); <br /></span><span style="color: #008080;">32</span> <span style="color: #000000;"> sv.invalidate(); <br /></span><span style="color: #008080;">33</span> <span style="color: #000000;"> } <br /></span><span style="color: #008080;">34</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">35</span> <span style="color: #000000;"> }; <br /></span><span style="color: #008080;">36</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> getValues(){ <br /></span><span style="color: #008080;">37</span> <span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;"><</span><span style="color: #000000;">20</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){ <br /></span><span style="color: #008080;">38</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">39</span> <span style="color: #000000;"> carray[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">Float.valueOf(et[i].getText().toString()); <br /></span><span style="color: #008080;">40</span> <span style="color: #000000;"> } <br /></span><span style="color: #008080;">41</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">42</span> <span style="color: #000000;"> } <br /></span><span style="color: #008080;">43</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">44</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">45</span> <span style="color: #000000;">} <br /></span><span style="color: #008080;">46</span> <span style="color: #000000;">MyImagecȝ承自Viewc: <br /></span><span style="color: #008080;">47</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> MyImage </span><span style="color: #0000ff;">extends</span><span style="color: #000000;"> View { <br /></span><span style="color: #008080;">48</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> Paint mPaint </span><span style="color: #000000;">=</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> Paint(Paint.ANTI_ALIAS_FLAG); <br /></span><span style="color: #008080;">49</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> Bitmap mBitmap; <br /></span><span style="color: #008080;">50</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">float</span><span style="color: #000000;"> [] array</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span> <span style="color: #0000ff;">float</span><span style="color: #000000;">[</span><span style="color: #000000;">20</span><span style="color: #000000;">]; <br /></span><span style="color: #008080;">51</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">52</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">float</span><span style="color: #000000;"> mAngle; <br /></span><span style="color: #008080;">53</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">54</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> MyImage(Context context,AttributeSet attrs) { <br /></span><span style="color: #008080;">55</span> <span style="color: #0000ff;">super</span><span style="color: #000000;">(context,attrs); <br /></span><span style="color: #008080;">56</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">57</span> <span style="color: #000000;"> mBitmap </span><span style="color: #000000;">=</span><span style="color: #000000;"> BitmapFactory.decodeResource(context.getResources(), <br /></span><span style="color: #008080;">58</span> <span style="color: #000000;"> R.drawable.test); <br /></span><span style="color: #008080;">59</span> <span style="color: #000000;"> invalidate(); <br /></span><span style="color: #008080;">60</span> <span style="color: #000000;"> } <br /></span><span style="color: #008080;">61</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">62</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">63</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setValues(</span><span style="color: #0000ff;">float</span><span style="color: #000000;"> [] a){ <br /></span><span style="color: #008080;">64</span> <span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;"><</span><span style="color: #000000;">20</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){ <br /></span><span style="color: #008080;">65</span> <span style="color: #000000;"> array[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">a[i]; <br /></span><span style="color: #008080;">66</span> <span style="color: #000000;"> } <br /></span><span style="color: #008080;">67</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">68</span> <span style="color: #000000;"> } <br /></span><span style="color: #008080;">69</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">70</span> <span style="color: #000000;"> @Override </span><span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onDraw(Canvas canvas) { <br /></span><span style="color: #008080;">71</span> <span style="color: #000000;"> Paint paint </span><span style="color: #000000;">=</span><span style="color: #000000;"> mPaint; <br /></span><span style="color: #008080;">72</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">73</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">74</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">75</span> <span style="color: #000000;"> paint.setColorFilter(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">); <br /></span><span style="color: #008080;">76</span> <span style="color: #000000;"> canvas.drawBitmap(mBitmap, </span><span style="color: #000000;">0</span><span style="color: #000000;">, </span><span style="color: #000000;">0</span><span style="color: #000000;">, paint); <br /></span><span style="color: #008080;">77</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">78</span> <span style="color: #000000;"> ColorMatrix cm </span><span style="color: #000000;">=</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> ColorMatrix(); <br /></span><span style="color: #008080;">79</span> <span style="color: #008000;">//</span><span style="color: #008000;">讄颜色矩阵 </span><span style="color: #008000;"><br /></span><span style="color: #008080;">80</span> <span style="color: #000000;"> cm.set(array); <br /></span><span style="color: #008080;">81</span> <span style="color: #008000;">//</span><span style="color: #008000;">颜色滤镜Q将颜色矩阵应用于图? </span><span style="color: #008000;"><br /></span><span style="color: #008080;">82</span> <span style="color: #000000;"> paint.setColorFilter(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> ColorMatrixColorFilter(cm)); <br /></span><span style="color: #008080;">83</span> <span style="color: #008000;">//</span><span style="color: #008000;">l图 </span><span style="color: #008000;"><br /></span><span style="color: #008080;">84</span> <span style="color: #000000;"> canvas.drawBitmap(mBitmap, </span><span style="color: #000000;">0</span><span style="color: #000000;">, </span><span style="color: #000000;">0</span><span style="color: #000000;">, paint); <br /></span><span style="color: #008080;">85</span> <span style="color: #000000;"> Log.i(</span><span style="color: #000000;">"</span><span style="color: #000000;">CMatrix</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">--------->onDraw</span><span style="color: #000000;">"</span><span style="color: #000000;">); <br /></span><span style="color: #008080;">86</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">87</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">88</span> <span style="color: #000000;"> } <br /></span><span style="color: #008080;">89</span> <span style="color: #000000;"> <br /></span><span style="color: #008080;">90</span> <span style="color: #000000;">} </span></div> <div><span style="color: #000000;"><br /></span></div> <div><span style="color: #000000;"><br /></span></div> </div> <p><span style="font-family: arial, helvetica, sans-serif;">CMatrixcM要负?接收颜色矩阵的设|和重绘Q没有要说的。MyImagecMq行l图工作Q首先设|颜色矩阵cm.set(..)从一l数l中d数据20个数据给颜色?阵赋|paint.setColorFilter(..)讄颜色滤镜Q然后绘图,效果出来了Q这个过E和PS差不多)如下Q?/span><em><em><em><em><em><em><em><br /><br /><a id="url_6" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_12713818099NMQz4Nl.png" border="0" alt="" /></a><br /><a id="url_7" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271381825XJGiUUGn.png" border="0" alt="" /></a><br /><a id="url_8" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271381842U0m4uTUx.png" border="0" alt="" /></a><br /><a id="url_9" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_12713818647kb99802.png" border="0" alt="" /></a><br /></em></em></em></em></em></em></em><span style="font-family: arial, helvetica, sans-serif;">看到q里Q相信大家对颜色矩阵的作用已l有了一个直观的感受Q现在也可以试做一个照片特效的软g?/span></p> <p><span style="font-family: arial, helvetica, sans-serif;">但是各种效果q不能让用户手动调节颜色矩阵Q这里需要计公式,׃本hq不是做囑Ş软g的也不能提供Q可以参考这个链接:</span><br /><span style="font-family: arial, helvetica, sans-serif;"><a id="url_10" target="_blank">http://www.adobe.com/devnet/flash/articles/matrix_transformations/ColorMatrixDemo.swf</a></span></p> <p><br /><span style="font-family: arial, helvetica, sans-serif;"><strong>坐标变换矩阵</strong></span><br /><span style="font-family: arial, helvetica, sans-serif;">坐标变换矩阵是一?*3的矩阵如?.1Q用来对囑Şq行坐标变化Q将原来的坐标点转移到新的坐标点Q?/span></p> <p><span style="font-family: arial, helvetica, sans-serif;">因ؓ一个图片是有点阵和每一点上的颜色信息组成的Q所以对坐标的变换,是Ҏ一点进行搬UdŞ成新的图片?/span></p> <p><span style="font-family: arial, helvetica, sans-serif;">具体的说囑Ş的放大羃,UdQ旋转,透视Q扭曲这些效果都可以用此矩阵来完成?/span><em><em><em><em><em><em><em><br /><br /><a id="url_11" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271381907wVeuzTD2.png" border="0" alt="" /></a><br /></em></em></em></em></em></em></em><span style="font-family: arial, helvetica, sans-serif;">q个矩阵的作用是对坐标x,yq行变换计算l果如下Q?/span><br /><span style="font-family: arial, helvetica, sans-serif;">x'=a*x+b*y+c</span><br /><span style="font-family: arial, helvetica, sans-serif;">y'=d*x+e*y+f</span><br /><span style="font-family: arial, helvetica, sans-serif;">通常情况下g=h=0,q样?=0*x+0*y+1恒成立。和颜色矩阵一P坐标变换矩阵真正使用的参数很也很有规律?/span><em><em><em><em><em><em><em><br /><br /><a id="url_12" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271381929fvyejlxl.png" border="0" alt="" /></a><br /></em></em></em></em></em></em></em><span style="font-family: arial, helvetica, sans-serif;">上图是一个坐标变换矩늚单例子,计算后发现x'=x+50,y'=y+50.</span></p> <p><span style="font-family: arial, helvetica, sans-serif;">可见囄的每一炚w在x和y方向上^Ud了(50Q?0Q点处,q种效果是q移效果Q将囄转移CQ?0Q?0Q处?/span><em><em><em><em><em><em><em><br /><a id="url_13" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271381954eNEbYoEI.png" border="0" alt="" /></a><br /></em></em></em></em></em></em></em><span style="font-family: arial, helvetica, sans-serif;">计算上面得矩阵x'=2*x,y‘=2*y.l过颜色矩阵和上面{UL果学习,怿读者可以明白这个矩늚作用了,q个矩阵对图片进行了攑֤Q具体的说是攑֤了二倍?/span><br /><span style="font-family: arial, helvetica, sans-serif;">下面介l几U常用的变换矩阵Q?/span><br /><span style="font-family: arial, helvetica, sans-serif;">1.      旋{</span><em><em><em><em><em><em><em><br /><a id="url_14" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271381984t6X7xcj1.png" border="0" alt="" /></a></em></em></em></em></em></em></em></p> <p><em><em><em><em><em><em><em><br /></em></em></em></em></em></em></em><span style="font-family: arial, helvetica, sans-serif;">l原炚w时针旋?#952;度角的变换公式是 x' = xcosθ − ysinθ ?y? = xsinθ +    ycosθ</span><br /><span style="font-family: arial, helvetica, sans-serif;">2.      ~放</span><em><em><em><em><em><em><em><br /><a id="url_15" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271382016TeOFkZ5i.png" border="0" alt="" /></a></em></em></em></em></em></em></em></p> <p><br />变换后长宽分别放大x'=scale*x;y'=scale*y.<br />3.         切变<br /><a id="url_16" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271382046nPrSJD3C.png" border="0" alt="" /></a></p> <p><br />4.         反射<br /><a id="url_17" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271382180iZqxVK85.png" border="0" alt="" /></a><br />( , )单位向量<br />5.         正投?br /><a id="url_18" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_12713822147vGAWixg.png" border="0" alt="" /></a><br />( , )单位向量<br /> <br />上面的各U效果也可以叠加在一P既矩늚l合变换Q可以用矩阵乘法实现之,如:R=B(A*C)=(B*A)C,注意一点就是B*A和A*B一般是不等的?/p> <p>下面编一个小E序Q通过控制坐标变换矩阵来达到控制图形的目的QJavaCode如下Q?br /><br />复制到剪贴板  Java代码</p> <div> <div><span style="color: #008080;"> 1</span></div> </div> <div> <div><span style="color: #000000;">CooMatrixc: <br /></span><span style="color: #008080;"> 2</span><span style="color: #000000;"> <br /></span><span style="color: #008080;"> 3</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> CooMatrix </span><span style="color: #0000ff;">extends</span><span style="color: #000000;"> Activity { <br /></span><span style="color: #008080;"> 4</span><span style="color: #000000;"> <br /></span><span style="color: #008080;"> 5</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> Button change; <br /></span><span style="color: #008080;"> 6</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> EditText [] et</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> EditText[</span><span style="color: #000000;">9</span><span style="color: #000000;">]; <br /></span><span style="color: #008080;"> 7</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">float</span><span style="color: #000000;"> []carray</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span> <span style="color: #0000ff;">float</span><span style="color: #000000;">[</span><span style="color: #000000;">9</span><span style="color: #000000;">]; <br /></span><span style="color: #008080;"> 8</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> MyImage sv; <br /></span><span style="color: #008080;"> 9</span> <span style="color: #008000;">/**</span><span style="color: #008000;"> Called when the activity is first created. </span><span style="color: #008000;">*/</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">10</span><span style="color: #000000;"> @Override <br /></span><span style="color: #008080;">11</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onCreate(Bundle savedInstanceState) { <br /></span><span style="color: #008080;">12</span> <span style="color: #0000ff;">super</span><span style="color: #000000;">.onCreate(savedInstanceState); <br /></span><span style="color: #008080;">13</span><span style="color: #000000;"> setContentView(R.layout.main); <br /></span><span style="color: #008080;">14</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">15</span><span style="color: #000000;"> change</span><span style="color: #000000;">=</span><span style="color: #000000;">(Button)findViewById(R.id.set); <br /></span><span style="color: #008080;">16</span><span style="color: #000000;"> sv</span><span style="color: #000000;">=</span><span style="color: #000000;">(MyImage)findViewById(R.id.MyImage); <br /></span><span style="color: #008080;">17</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">18</span> <span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;"><</span><span style="color: #000000;">9</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){ <br /></span><span style="color: #008080;">19</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">20</span><span style="color: #000000;"> et[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">(EditText)findViewById(R.id.indexa</span><span style="color: #000000;">+</span><span style="color: #000000;">i); <br /></span><span style="color: #008080;">21</span><span style="color: #000000;"> carray[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">Float.valueOf(et[i].getText().toString()); <br /></span><span style="color: #008080;">22</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">23</span><span style="color: #000000;"> } <br /></span><span style="color: #008080;">24</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">25</span><span style="color: #000000;"> change.setOnClickListener(l); <br /></span><span style="color: #008080;">26</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">27</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">28</span><span style="color: #000000;"> } <br /></span><span style="color: #008080;">29</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">30</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> Button.OnClickListener l</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Button.OnClickListener(){ <br /></span><span style="color: #008080;">31</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">32</span><span style="color: #000000;"> @Override <br /></span><span style="color: #008080;">33</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onClick(View arg0) { <br /></span><span style="color: #008080;">34</span> <span style="color: #008000;">//</span><span style="color: #008000;"> TODO Auto-generated method stub </span><span style="color: #008000;"><br /></span><span style="color: #008080;">35</span><span style="color: #000000;"> getValues(); <br /></span><span style="color: #008080;">36</span><span style="color: #000000;"> sv.setValues(carray); <br /></span><span style="color: #008080;">37</span><span style="color: #000000;"> sv.invalidate(); <br /></span><span style="color: #008080;">38</span><span style="color: #000000;"> } <br /></span><span style="color: #008080;">39</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">40</span><span style="color: #000000;"> }; <br /></span><span style="color: #008080;">41</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> getValues(){ <br /></span><span style="color: #008080;">42</span> <span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;"><</span><span style="color: #000000;">9</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){ <br /></span><span style="color: #008080;">43</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">44</span><span style="color: #000000;"> carray[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">Float.valueOf(et[i].getText().toString()); <br /></span><span style="color: #008080;">45</span><span style="color: #000000;"> } <br /></span><span style="color: #008080;">46</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">47</span><span style="color: #000000;"> } <br /></span><span style="color: #008080;">48</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">49</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">50</span><span style="color: #000000;">} <br /></span><span style="color: #008080;">51</span><span style="color: #000000;">MyImagecȝ承自Viewc: <br /></span><span style="color: #008080;">52</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> MyImage </span><span style="color: #0000ff;">extends</span><span style="color: #000000;"> View { <br /></span><span style="color: #008080;">53</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> Paint mPaint </span><span style="color: #000000;">=</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> Paint(Paint.ANTI_ALIAS_FLAG); <br /></span><span style="color: #008080;">54</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> Bitmap mBitmap; <br /></span><span style="color: #008080;">55</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">float</span><span style="color: #000000;"> [] array</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span> <span style="color: #0000ff;">float</span><span style="color: #000000;">[</span><span style="color: #000000;">9</span><span style="color: #000000;">]; <br /></span><span style="color: #008080;">56</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">57</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">58</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">59</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> MyImage(Context context,AttributeSet attrs) { <br /></span><span style="color: #008080;">60</span> <span style="color: #0000ff;">super</span><span style="color: #000000;">(context,attrs); <br /></span><span style="color: #008080;">61</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">62</span><span style="color: #000000;"> mBitmap </span><span style="color: #000000;">=</span><span style="color: #000000;"> BitmapFactory.decodeResource(context.getResources(), <br /></span><span style="color: #008080;">63</span><span style="color: #000000;"> R.drawable.ic_launcher_android); <br /></span><span style="color: #008080;">64</span><span style="color: #000000;"> invalidate(); <br /></span><span style="color: #008080;">65</span><span style="color: #000000;"> } <br /></span><span style="color: #008080;">66</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">67</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">68</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setValues(</span><span style="color: #0000ff;">float</span><span style="color: #000000;"> [] a){ <br /></span><span style="color: #008080;">69</span> <span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;"><</span><span style="color: #000000;">9</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){ <br /></span><span style="color: #008080;">70</span><span style="color: #000000;"> array[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">a[i]; <br /></span><span style="color: #008080;">71</span><span style="color: #000000;"> } <br /></span><span style="color: #008080;">72</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">73</span><span style="color: #000000;"> } <br /></span><span style="color: #008080;">74</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">75</span><span style="color: #000000;"> @Override </span><span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onDraw(Canvas canvas) { <br /></span><span style="color: #008080;">76</span><span style="color: #000000;"> Paint paint </span><span style="color: #000000;">=</span><span style="color: #000000;"> mPaint; <br /></span><span style="color: #008080;">77</span><span style="color: #000000;"> canvas.drawBitmap(mBitmap, </span><span style="color: #000000;">0</span><span style="color: #000000;">, </span><span style="color: #000000;">0</span><span style="color: #000000;">, paint); <br /></span><span style="color: #008080;">78</span> <span style="color: #008000;">//</span><span style="color: #008000;">new 一个坐标变换矩? </span><span style="color: #008000;"><br /></span><span style="color: #008080;">79</span><span style="color: #000000;"> Matrix cm </span><span style="color: #000000;">=</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> Matrix(); <br /></span><span style="color: #008080;">80</span><span style="color: #008000;">//</span><span style="color: #008000;">为坐标变换矩阵设|响应的? </span><span style="color: #008000;"><br /></span><span style="color: #008080;">81</span><span style="color: #000000;"> cm.setValues(array); <br /></span><span style="color: #008080;">82</span><span style="color: #008000;">//</span><span style="color: #008000;">按照坐标变换矩阵的描q绘? </span><span style="color: #008000;"><br /></span><span style="color: #008080;">83</span><span style="color: #000000;"> canvas.drawBitmap(mBitmap, cm, paint); <br /></span><span style="color: #008080;">84</span><span style="color: #000000;"> Log.i(</span><span style="color: #000000;">"</span><span style="color: #000000;">CMatrix</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">--------->onDraw</span><span style="color: #000000;">"</span><span style="color: #000000;">); <br /></span><span style="color: #008080;">85</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">86</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">87</span><span style="color: #000000;"> } <br /></span><span style="color: #008080;">88</span><span style="color: #000000;"> <br /></span><span style="color: #008080;">89</span></div> </div> <div> <div><span style="color: #000000;">} </span></div> </div> <p><em><em><em><em><em><em><em><em><em><em><em><em><em><em><br /></em></em></em></em></em></em></em></em></em></em></em></em></em></em><br /><span style="font-family: arial, helvetica, sans-serif;">上面的代码中cCooMatrix用于接收用户输入的坐标变换矩阵参敎ͼcMyImage接收参数Q通过setValues()讄矩阵参数Q然后Canvas调用drawBitmapl图。效果如下:</span></p> <p><em><em><em><em><em><em><em><em><em><em><em><em><em><em><br /><a id="url_19" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271382361vPYddmGF.png" border="0" alt="" /></a><br /><a id="url_20" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_12713823723z3c370V.png" border="0" alt="" /></a><br /><a id="url_21" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271382385uV1mf9rz.png" border="0" alt="" /></a><br /></em></em></em></em></em></em></em></em></em></em></em></em></em></em><span style="font-family: arial, helvetica, sans-serif;">上面l出了用坐标变换矩阵做出的各U效果,用坐标变换矩阵可以方面的调节囑Ş的各U效果,</span></p> <p><span style="font-family: arial, helvetica, sans-serif;">但是我们看看Matrixcd可以发现Q实际上QmatrixcLw已l提供了许多cM的方法,我们只要调用Q就可以了?/span><br /> <br /><span style="font-family: arial, helvetica, sans-serif;">setScale(float sx, float sy, float px, float py) 攑֤ </span><br /><span style="font-family: arial, helvetica, sans-serif;">setSkew(float kx, float ky, float px, float py) 斜切 </span><br /><span style="font-family: arial, helvetica, sans-serif;">setTranslate(float dx, float dy)                       q移 </span><br /><span style="font-family: arial, helvetica, sans-serif;">setRotate(float degrees, float px, float py)    旋{ </span><br /> <br /><span style="font-family: arial, helvetica, sans-serif;">上面的函数提供了基本的变换^U,攑֤Q旋转,斜切。ؓ了做出更复杂的变换,同时不必亲手L动坐标变换矩阵,</span></p> <p><span style="font-family: arial, helvetica, sans-serif;">MatrixcL供了许多MapҎQ将原图形映到目标Ҏ成新的图形,</span></p> <p><span style="font-family: arial, helvetica, sans-serif;">下面qsetPolyToPoly(float[] src, int srcIndex, float[] dst, int dstIndex, int pointCount) 的用法,希望起到举一反三的作用?/span></p> <p><span style="font-family: arial, helvetica, sans-serif;">参数src和dst是分别存储了原图像的点和和指定的目标点的一l数l,数组中存储的坐标格式如下Q?/span><br /><span style="font-family: arial, helvetica, sans-serif;"> [x0, y0, x1, y1, x2,y2,...]</span><br /> <br /><span style="font-family: arial, helvetica, sans-serif;">q个个函数将src中的坐标映射到dst中的坐标Q实现图像的变换?/span></p> <p><span style="font-family: arial, helvetica, sans-serif;">具体的例子可以参考APIDemos里的PolyToPolyQ我在这里就不再贴代码了Q只讲一下函数是怎么变换囄的。下面是效果Q?/span><br /><em><em><em><em><em><em><em><em><em><em><em><em><em><em><br /><a id="url_22" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_127138243999fcMBcL.png" border="0" alt="" /></a><br /></em></em></em></em></em></em></em></em></em></em></em></em></em></em><span style="font-family: arial, helvetica, sans-serif;">图中?的是原图Q写?Q?Q?的是变换后的囑Ş。现在分?是怎么变换来的Q变换的原坐标点和目的坐标点如下Q?/span><br /><span style="font-family: arial, helvetica, sans-serif;">src=new float[] { 32, 32, 64, 32 }</span><br /><span style="font-family: arial, helvetica, sans-serif;">dst=new float[] { 32, 32, 64, 48 }</span><em><em><em><em><em><em><em><em><em><em><em><em><em><em><br /><a id="url_23" target="_blank"><img src="http://dev.chinamobile.com/cmdn/wiki/uploads/201004/s_1271382482XgYceLnf.png" border="0" alt="" /></a><br /></em></em></em></em></em></em></em></em></em></em></em></em></em></em><span style="font-family: arial, helvetica, sans-serif;">?上图标示出的坐标看出原图的(32Q?2Q映到原图的(32Q?2Q,Q?4Q?2Q映到原图Q?4Q?8Q这L效果是图像放大了而且发生了旋转?q样的过E相当于Q?2Q?2Q点不动Q然后拉住图形(64Q?2Q点q拉刎ͼ64Q?8Q点处,q样囑Ş必然会被拉攑֤q且发生旋{。最后用一个^U?图形移动到双现在的位|。希望能够好好理解这一q程Q下面的3Q?图是同样的道理?/span></p></div></div><img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/359537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2011-09-26 14:58 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2011/09/26/359537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>androidL页效果+囑Ş分析http://www.aygfsteel.com/wangxinsh55/archive/2011/09/21/359146.htmlSIMONESIMONEWed, 21 Sep 2011 03:59:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2011/09/21/359146.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/359146.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2011/09/21/359146.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/359146.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/359146.htmlpackage sf.hmg.turntest;import android.content.Context;import android.graphics.Bitmap;i...  阅读全文

SIMONE 2011-09-21 11:59 发表评论
]]>
矩阵的学?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2011/09/20/359081.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Tue, 20 Sep 2011 08:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2011/09/20/359081.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/359081.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2011/09/20/359081.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/359081.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/359081.html</trackback:ping><description><![CDATA[<div>http://www.moandroid.com/?page_id=1176</div><div><h2>Matrix学习Q未完)</h2> <ul><li><a title="Matrix学习——基础知识" target="_blank">基础知识</a></li><li><a title="Matrix学习——如何使用Matrix" target="_blank">如何使用Matrix</a></li><li><a title="Matrix学习——囑փ的复合变? target="_blank">囑փ的复合变?/a></li><li><a title="Matrix学习——Preconcats or Postconcats? " target="_blank">Preconcats matrix or Postconcats matrix?</a></li><li><a title="Matrix学习——错切变换" target="_blank">错切变换</a><img title="icon_new" src="http://www.moandroid.com/wp-content/uploads/2009/10/icon_new.gif" alt="icon_new" height="10" width="27" /></li><li><a title="对称变换Q反)" target="_blank">对称变换Q反)</a><img title="icon_new" src="http://www.moandroid.com/wp-content/uploads/2009/10/icon_new.gif" alt="icon_new" height="10" width="27" /></li></ul></div><img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/359081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2011-09-20 16:36 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2011/09/20/359081.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过ADB向android SD卡传送文?/title><link>http://www.aygfsteel.com/wangxinsh55/archive/2011/09/20/359046.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Tue, 20 Sep 2011 01:56:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangxinsh55/archive/2011/09/20/359046.html</guid><wfw:comment>http://www.aygfsteel.com/wangxinsh55/comments/359046.html</wfw:comment><comments>http://www.aygfsteel.com/wangxinsh55/archive/2011/09/20/359046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangxinsh55/comments/commentRss/359046.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangxinsh55/services/trackbacks/359046.html</trackback:ping><description><![CDATA[<div><span style="color: #333333; font-family: Georgia, 'Times New Roman', Times, san-serif; line-height: 25px; "><div><span style="font-size: large;"><span style="background-color: #ffffff;">1. 创徏SD卡ƈ挂蝲到模拟器</span></span></div><div><span style="background-color: #ffffff;">q?行cmdQƈcd至android-sdk\tools\目录下。输入如下命令则可创建ƈ挂蝲SD卡到模拟器上。mksdcard的参CSD卡的大小?位可以ؓK或者M(必须为大?Q他会在tools目录创徏一个文件叫sdcard.img。通过在emulator后添?sdcard卛_挂蝲SD?q启动模拟器?/span></div><div><span style="background-color: #ffffff;">mksdcard 256M sdcard.img</span></div><div><span style="background-color: #ffffff;">emulator -avd 2.2 -sdcard sdcard.img</span></div><div><span style="background-color: #ffffff;">2. 操作单个文g</span></div><div><span style="background-color: #ffffff;">通过adb pushQ则可将文gd到SD卡中。如果想在push的时候修Ҏ件名U的话,只需要修改push的第二个参数Ҏ完整路径Q目?文g名)Q如/sdcard/test-0.jpg。重启模拟器Q则可以在见到SD卡中新添加的内容了?/span></div><div><span style="background-color: #ffffff;"><br /></span></div><div><span style="background-color: #ffffff;">adb push E:/images/test.jpg /sdcard/</span></div><div><span style="background-color: #ffffff;">adb push E:/images/test.jpg /sdcard/test-0.jpg</span></div><div><span style="background-color: #ffffff;">而要test.jpg提取出来的话Q可使用adb pull命o。第二个参数为本机硬盘地址Q如果不x名的话,只需要输入目录地址Q不能加\)Q而需要改名的话,输入文g的完整\径就行了?/span></div><div><span style="background-color: #ffffff;">adb pull /sdcard/images/test.jpg E:\tmp</span></div><div><span style="background-color: #ffffff;">adb pull /sdcard/images/test.jpg E:\tmp\test-0.jpg</span></div><div><span style="background-color: #ffffff;">3. 操作整个文g?/span></div><div><span style="background-color: #ffffff;">要将盘上的一个文件夹的所有内定wd至SD卡的话,可以通过如下命oQ注意pic后面不能有\Q:</span></div><div><span style="background-color: #ffffff;">adb push E:\Android\pic /sdcard/images/</span></div><div><span style="background-color: #ffffff;">该命令会把pic文g下以及其子文件夹的内容全部添加到SD卡的images目录下。如果SD卡下没有images目录的话Q可以先通过adb shellq行创徏Q如下:</span></div><div><span style="background-color: #ffffff;">adb shell</span></div><div><span style="background-color: #ffffff;">cd /sdcard</span></div><div><span style="background-color: #ffffff;">mkdir images</span></div><div><span style="background-color: #ffffff;">exit</span></div><div><span style="background-color: #ffffff;">而导出整个文件夹的话Q可以通过如下命oQ?/span></div><div><span style="background-color: #ffffff;">adb pull /sdcard/images/ E:\tmp</span></div></span></div><img src ="http://www.aygfsteel.com/wangxinsh55/aggbug/359046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangxinsh55/" target="_blank">SIMONE</a> 2011-09-20 09:56 <a href="http://www.aygfsteel.com/wangxinsh55/archive/2011/09/20/359046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ҳ</a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٰ</a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">봨</a>| <a href="http://" target="_blank">ͩ</a>| <a href="http://" target="_blank">ϼ</a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">ָ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">±</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">㺺</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>