bitBlt 贴图拷贝
<p>[TOC]</p>
<h5>简要描述</h5>
<ul>
<li>bitBlt可以进行图像块拷贝,从一幅图像中裁剪指定大小图像块,拷贝贴图到另一幅图像中。并可设置阿尔法权重,亮度校正。可用于:制作长图、logo水印</li>
</ul>
<h5>参数</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th style="text-align: center;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">mat1</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">mat</td>
<td style="text-align: center;">贴图目标mat</td>
</tr>
<tr>
<td style="text-align: left;">x1</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td style="text-align: center;">贴图左上角x(应大于 -1)</td>
</tr>
<tr>
<td style="text-align: left;">y1</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td style="text-align: center;">贴图左上角y (应大于 -1)</td>
</tr>
<tr>
<td style="text-align: left;">x2</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td style="text-align: center;">贴图右下角x,为-1时,表示缺省大小。否则将对裁剪图进行缩放。以迎合参数设置</td>
</tr>
<tr>
<td style="text-align: left;">y2</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td style="text-align: center;">贴图右下角y,为-1时,表示缺省大小。否则将对裁剪图进行缩放。以迎合参数设置</td>
</tr>
<tr>
<td style="text-align: left;">mat2</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">mat</td>
<td style="text-align: center;">裁剪目标mat</td>
</tr>
<tr>
<td style="text-align: left;">sx1</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td style="text-align: center;">裁剪左上角x (应大于 -1)</td>
</tr>
<tr>
<td style="text-align: left;">sy1</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td style="text-align: center;">裁剪左上角y (应大于 -1)</td>
</tr>
<tr>
<td style="text-align: left;">sx2</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td style="text-align: center;">裁剪右下角x,为-1时,表示缺省大小。</td>
</tr>
<tr>
<td style="text-align: left;">sy2</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td style="text-align: center;">裁剪右下角y,为-1时,表示缺省大小。</td>
</tr>
<tr>
<td style="text-align: left;">alpha</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">double</td>
<td style="text-align: center;">裁剪图贴到目标图像上时的混合权重,0-1之间。</td>
</tr>
<tr>
<td style="text-align: left;">gamma</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">double</td>
<td style="text-align: center;">亮度校正值。</td>
</tr>
</tbody>
</table>
<h5>返回参数说明</h5>
<p>boolean</p>
<h5>示例(图像色调调整)</h5>
<pre><code class="language-java"> //载入动漫图像。
var mat=cvImg.loadFromFile("/sdcard/Pictures/t2.png");
//创建一个大小与动漫图大小、类型一至的图像。
var mat_color=cvImg.zeros(mat.cols(),mat.rows(),mat.type());
//使用绘制矩形方法,给图像填充指定颜色(粉红)。
cvImg.rectangle(mat_color,0,0,mat.cols(),mat.rows(),[250,103,107,0]);
//使用bitBlt进行贴图。
cvImg.bitBlt(mat,0,0,-1,-1,mat_color,0,0,-1,-1,0.2,0);
//保存结果到文件。
cvImg.toFile(mat,"/sdcard/Pictures/tem1.jpg");
//释放
cvImg.release(mat);
cvImg.release(mat_color);</code></pre>
<p>原图
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=64b0025d2bba120fef892bb28dc5f91e&file=file.png" alt="" /></p>
<p>上粉色色调(透明权重混合)</p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=09dc955b75951d2a0f2ecc32ccbbac86&file=file.jpg" alt="" /></p>
<h5>示例 (制作长图)</h5>
<p>由于资源有限,无法上传尺寸过大的图像。制作长图的方法根以上操作类似,先使用zeros创建一个长图的模板,然后使用bitBlt往这个模板贴图就行了,你仅仅需要通过参数控制贴图范围。alpha参数绝对了贴图透明度,当不需要透明度时,alpha的值应该设置为1。以下做个小的演示:</p>
<pre><code class="language-java"> //载入动漫图像。
var mat=cvImg.loadFromFile("/sdcard/Pictures/mat_50.png");
//创建一个长图模板300*1200
var mat_long=cvImg.zeros(cvImg.getWidth(mat),1200,16);
//使用bitBlt从动漫图像裁剪图色块 300*200 ,拷贝到长图模板。
for(var i=0;i<1200/200;i++){
cvImg.bitBlt(mat_long,0,i*200,-1,-1,mat,0,0,-1,-1,1,0);
}
//保存结果到文件。
cvImg.toFile(mat_long,"/sdcard/Pictures/tem1.jpg");
//释放
cvImg.release(mat);
cvImg.release(mat_long);</code></pre>
<p>动漫原图,
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=94f0a70b35bad31e1590da23cbeef121&file=file.png" alt="" /></p>
<p>制作生成的长图。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=d2f44dc3d2885b52412e43afa466f20f&file=file.jpg" alt="" /></p>