››图像软件››图像转换››YUV420转BMP工具
YUV420转BMP工具

YUV420转BMP工具 绿色版

大小:25 KB系统:WinXP, Win2003, Vista, Win7, Win8, Win10

类别:图像转换时间:2018-09-28 21:03

  • YUV420转BMP工具

YUV420转BMP是一款好用的yuv420转bmp工具,主要用于将yuv420转化成bmp图片格式,从而更加清楚的查看图像,支持vs2003和vs2005。软件功能强大,需要懂编程的朋友才可以使用。需要的朋友可以下载!

YUV420格式数据介绍

YUV,分为三个分量,“Y”表示明亮度,也就是灰度值;“U"和”V"表示的则是色度,作用是描述影像色彩饱和度,用于指定像素的颜色。YUV主流的采样方式有三种:YUV4:4:4,YUV4:2:2,YUV4:2:0,这里主要介绍下YUV420。

在YUV420中,一个像素点对应一个Y,一个2X2的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰度图像。YUV420又分为YUV420SP与YUV420P这两种,这两种格式的Y分布是相同的,区别在于UV:YUV420p它是先把U存放完后,再存放V,也就是说UV它们是连续的;而YUV420sp它是UV、UV这样交替存放的。(他们的内存分布图如下,左是YUV420sp,右是YUV420p)

yuv420转bmp的方法:

我找到了一个c写的exe ,但是c的水平我实在是不敢去修改那个源码,所以我干脆就调用这个dll,在c#里建立了下面这个类, 然后调用 Y2b.exe 来转换, 而且不会显示出来那个黑屏.要知道怎么回事,就看代码吧!呵呵.

using System;

using System.Collections.Generic;

using System.Text;

using System.Diagnostics;

using System.Drawing;

using System.IO;

namespace JXImage

{

public class YUV2BMP

{

///

/// 检查程序配置是否正常, 比如exe路径,图片文件夹等. 一般情况下设置了路径和图片文件路径以及图片后,应该使用属性取得是否可以执行命令.

///

public bool CanUse

{

get

{

if (System.IO.File.Exists(System.Windows.Forms.Application.StartupPath + "//Y2B.exe") )

{

return true;

}

return false;

}

}

private string bmpfile = null;

///

/// BMP文件名, 在成功执行转换后可以用此获得文件路径..

///

/// 返回文件名

public string GetBmpFileName()

{

return bmpfile;

}

///

/// BMP数据流,成功转换后可以从此获得流 .

///

/// 数据流形式的BMP

public MemoryStream GetBmpFileStream()

{

try

{

return new MemoryStream(System.IO.File.ReadAllBytes(bmpfile));

}

catch (Exception)

{

return null;

}

}

///

/// Image 成功转换后可以用此来获得文件.

///

/// 返回一个图片

public Image GetBmp()

{

try

{

return Image.FromFile(bmpfile);

}

catch (Exception)

{

return null;

}

}

///

/// YUV转BMP

///

///YUV文件名

/// 返回是否成功

public bool YUVtoBMP(string yuvfilename)

{

if (CanUse)

{

string ret = Execute(yuvfilename);

if (ret.IndexOf("OK")>=0)//从0字符开始会有个OK

{

if (System.IO.File.Exists(yuvfilename.Replace(".yuv", ".bmp")))

{

bmpfile = yuvfilename.Replace(".yuv", ".bmp");

return true;

}

}

}

return false;

}

///

/// 执行DOS命令.

///

///命令

/// 返回执行结果

public static string Execute(string yuvfilename)

{

int milliseconds = 2 * 1000;//两秒

string output = ""; //输出字符串

if (yuvfilename != null && yuvfilename != "")

{

Process process = new Process(); //创建进程对象

ProcessStartInfo startInfo = new ProcessStartInfo();

startInfo.FileName =System.Windows.Forms.Application.StartupPath +"//Y2B.exe" ; //设定需要执行的命令

startInfo.Arguments = "/h352 /v288 /""+yuvfilename+"/" /"" +yuvfilename.Replace(".yuv",".bmp"); //设定参数,其中的“/C”表示执行完命令后马上退出

startInfo.UseShellExecute = false; //不使用系统外壳程序启动

startInfo.RedirectStandardInput = false; //不重定向输入

startInfo.RedirectStandardOutput = true; //重定向输出

startInfo.CreateNoWindow = true; //不创建窗口

process.StartInfo = startInfo;

try

{

if (process.Start()) //开始进程

{

if (milliseconds == 0)

process.WaitForExit(); //这里无限等待进程结束

else

process.WaitForExit(milliseconds); //这里等待进程结束,等待时间为指定的毫秒

output = process.StandardOutput.ReadToEnd();//读取进程的输出

}

}

catch

{

}

finally

{

if (process != null)

process.Close();

}

return output;

}

return null;

}

}

}

相关文章

热门推荐

同类排行榜

  1. 1无悔华夏4399版621.9 MB
  2. 2最强祖师无限金币钻石版160.9 MB
  3. 3360时空猎人1.35 GB
  4. 4锚点降临1.75 GB
  5. 5卡车人生内购版1.59 GB
  6. 6我的汤姆猫2单机版150.3 MB
  7. 7九游幻兽爱合成192.7 MB
  8. 8九灵神域vivo版577.8 MB
  9. 9狗狗呼叫喵星破解版372.4 MB
  10. 10航海王强者之路折扣服1.98 GB

评论

我要跟帖
取消