php实现将wav文件转换成图像文件并在页面中显示的方法


Posted in PHP onApril 21, 2015

本文实例讲述了php实现将wav文件转换成图像文件并在页面中显示的方法。分享给大家供大家参考。具体分析如下:

需求:将wav文件转换成png文件并且显示出来。

Wav_To_Png.php:

<?php
 function wav_graph($file, $f=0, $w=0)
 {
  global $DATA_DIR;
  if(!is_file($file))
   return 0;
  $fp = fopen($DATA_DIR.$file, 'r');
  $raw = fread($fp, 36);
  $str = '';
  $header = unpack('A4Riff/VSize/A4Wav/A4Head/VHeadSize/vPCM/vChannels/VSampleRate/VByteRate/vBlockAlign/vSampleBits', $raw);
  foreach($header as $k=>$v)
   $str .= $k.': '. $v.' ';
  fseek($fp, 36 + $header['HeadSize'] - 16);
  $raw = fread($fp, 8);
  $data = unpack('A4Data/VDataSize', $raw);
  foreach($data as $k=>$v)
   $str .= $k.': '. $v.' ';
  $b = $header['SampleBits'];
  $c = $header['Channels'];
  $l = $b * $c / 8; // sample frame length in bytes
  $s = $data['DataSize'] / $l; // total number of samples
  $r = $header['SampleRate'];
  if($f)
   $h = pow(2, $b) / $f;
  else
   { $h = 200; $f = pow(2, $b - 1) / $h; }
  if($w == 0)
   $w = round($r / 1000); // default to show 1k sample frames per minute
  header("Content-type: image/png");
  $im = imagecreate($s / $w, $h * $c * 2);
  imagecolorallocate($im, 0xff, 0xff, 0xff); // white bg
  $color = imagecolorallocate($im, 0, 0, 255); // black
  imagestring($im, 5, 5, 5, $str, $color);
  $x=0; $y = array(); $yn = array();
  for($i = 0; $i < $c; $i++) $y[$i] = $h * $i + $h;
  $n = $l * $w;
  while(1)
  {
   if($s == 0) 
    break;
   if($s < $n) 
    $n = $s;
   $samples = fread($fp, 1000 * $n);
   if($samples === FALSE)
    break;
   $packed = unpack("s*", $samples);
   foreach($packed as $k=>$v)
   {
    $cnt = ($k-1) % ($w * $l) ;
    if( $cnt > $c - 1) 
     continue;
    $yn[$cnt] = $h * $cnt + $h - $v / $f;
    imageline($im, $x, $y[$cnt], $x+1, $yn[$cnt], $color);
    $y[$cnt] = $yn[$cnt];
    $x++;
   }
   $s -= $n;
  }
  imagepng($im);
  imagedestroy($im);
 }
 wav_graph('GetWave.wav');
?>

效果图如下:

php实现将wav文件转换成图像文件并在页面中显示的方法

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
php利用cookie实现访问次数统计代码
May 19 PHP
PHP使用数组实现队列
Feb 05 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
PHP实现加密的几种方式介绍
Feb 22 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
php获取指定数量随机字符串的方法
Feb 06 PHP
PHP 无限级分类
May 04 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 PHP
Laravel框架下载,安装及路由操作图文详解
Dec 04 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 PHP
PHP判断是否为空的几个函数对比
Apr 21 #PHP
php两种无限分类方法实例
Apr 21 #PHP
PHP中使用register_shutdown_function函数截获fatal error示例
Apr 21 #PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 #PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 #PHP
PHP使用递归生成文章树
Apr 21 #PHP
php实现的美国50个州选择列表实例
Apr 20 #PHP
You might like
PHP三元运算的2种写法代码实例
2014/05/12 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
python MNIST手写识别数据调用API的方法
2018/08/08 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
h5封装下拉刷新
2020/08/25 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
保险公司晨会主持词
2014/03/22 职场文书
求职个人评价范文
2014/04/09 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
2014年政协工作总结
2014/12/09 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python