当前位置: 首页 > 编程笔记 >

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

司空修贤
2023-03-14
本文向大家介绍php实现将wav文件转换成图像文件并在页面中显示的方法,包括了php实现将wav文件转换成图像文件并在页面中显示的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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程序设计有所帮助。

 类似资料:
  • 问题内容: 这可能与php和mysql数据库一起将blob转换为图像文件吗? 问题答案: 如果BLOB包含图像的二进制数据(以可识别的格式,例如tiff,png,jpeg等),则获取BLOB的内容,将其写入文件中,然后…,您得到了图像。 在某些奇怪的操作系统上,您必须给输出文件一个对应的扩展名,以便可以这样识别图像文件。

  • 本文向大家介绍Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中,包括了Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,直接上代码吧! 以上这篇Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍php实现将HTML页面转换成word并且保存的方法,包括了php实现将HTML页面转换成word并且保存的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现将HTML页面转换成word并且保存的方法。分享给大家供大家参考,具体如下: 这里用使用到一个PHP的工具叫:PHPWord。 生成Word的原理是,将堆规定好了的xml压缩成一个zip包,并且把后缀名改成d

  • 问题内容: 我想将PDF文档转换为图像。我正在使用Ghost4j。 问题: Ghost4J需要gsdll32.dll文件在运行时,我也 并不 想使用的DLL文件。 问题1: 在ghost4j中,有没有办法在没有dll的情况下转换图像? 问题2: 我在PDFBox API中找到了解决方案。convertToImage()将PDF页面转换为图像格式。 PDF文档上只有文本。运行此代码时出现该异常: 问

  • 我想把PDF文档转换成图像。我用的是Ghost4j。 问题:Ghost4J需要gsdll32。dll文件,我不想使用dll文件。 问题1:是否有任何方法,在ghost4j转换图像没有dll? 问题2:我在PDFBox API中找到了解决方案<代码>组织。阿帕奇。pdfbox。pdmodel。PDPagep具有将PDF页面转换为图像格式的方法convertToImage()。 我只有PDF文档上的文

  • 问题内容: 我已经将图像转换成一个csv文件,它就像一个矩阵,但我希望它是一行。如何将数据集中的所有图像转换成一个csv文件(每张图像转换成一行)。 这是我使用的代码: 问题答案: 从您的问题中,我想您想知道。您要添加 就在您的np.savetxt调用之前。它将仅将数组展平为一个维度,然后应将其打印为一行。 您剩下的问题尚不清楚,这意味着您的目录中包含jpeg图像,并且您需要一种通读所有jpeg图