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 相关文章推荐
做一个有下拉功能的留言版
Oct 09 PHP
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
请php正则走开
Mar 15 PHP
基于PHP开发中的安全防范知识详解
Jun 06 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
PHP去除字符串最后一个字符的三种方法实例
Mar 01 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 PHP
PHP后门隐藏的一些技巧总结
Nov 04 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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 4.2书写安全的脚本
2006/10/09 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
php设计模式 Facade(外观模式)
2011/06/26 PHP
PHP高自定义性安全验证码代码
2011/11/27 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
php把session写入数据库示例
2014/02/26 PHP
Laravel框架表单验证详解
2014/09/04 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
vue 使用post/get 下载导出文件操作
2020/08/07 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
pandas 选择某几列的方法
2018/07/03 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
Python利用scapy实现ARP欺骗的方法
2019/07/23 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
Python中logging日志库实例详解
2020/02/19 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
村安全生产责任书
2014/08/25 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书