温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php如何实现将wav文件转换成图像文件并在页面中显示

发布时间:2021-06-25 14:49:28 阅读:226 作者:小新 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章给大家分享的是有关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($fp36);
  $str '';
  $header unpack('A4Riff/VSize/A4Wav/A4Head/VHeadSize/vPCM/vChannels/VSampleRate/VByteRate/vBlockAlign/vSampleBits'$raw);
  foreach($header as $k=>$v)
   $str .= $k.': '$v.' ';
  fseek($fp36 + $header['HeadSize'] - 16);
  $raw fread($fp8);
  $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($im0xff0xff0xff); // white bg
  $color imagecolorallocate($im00255); // black
  imagestring($im555$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($fp1000 * $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如何实现将wav文件转换成图像文件并在页面中显示”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×