php – 解析包含图像数据的文本文件

前端之家收集整理的这篇文章主要介绍了php – 解析包含图像数据的文本文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经能够使用 Imagemagick从 http://www.imagemagick.org读取文本文件中的数据.

我明白了

  1. 0,0: (255,255,0) #FFFFFF00 srgba(255,0)
  2. 1,0)
  3. 2,0)
  4.  
  5.  
  6. 40,23: (162,167,32,24) #A2A72018 srgba(162,0.0941176)
  7. 41,23: (255,0)
  8. 42,166,48,40) #A2A63028 srgba(162,0.156863)
  9. 43,47,40) #A2A62F28 srgba(162,0.156863)

我对正则表达式不熟悉我将使用哪种表达方式@H_403_6@得到开头的坐标和最后的rgba().

好吧,我有点想通了正则表达式@H_403_6@这是它的一部分

  1. /rgba\([0-9]{1,3},[0-9]{1,[0-9]\.[0-9]{1-9}/gi

但最后一部分与rgba()的小数部分不匹配.

好吧,我知道它已经有一段时间了,我不确定我是否应该开始一个新线程

但我已经想出如何删除删除两个中间部分,所有括号@H_403_6@和srgba,也是零alpha的行,但不知何故,它在文本文件中留下了一个空白区域.如果有任何改进,任何人都可以看到.

  1. $fh = fopen("pcmanD.txt","r");
  2. $fg = fopen("pcmanJ.txt","wt");
  3. $new_array = ""; $parts = "";
  4. while (!feof($fh)) {
  5. $line = fgets($fh);
  6. $lines[] = $line;
  7. $newword = "";
  8. $match1 ="/:\s?\s?\(\s?\s?\d+,\s?\s?\d+,\s?\s?\d+\)\s?\s?#[a-zA-Z0-9]{6,8}\s?\s?srgba/";
  9. $match2 ="/^\s\s?/";
  10. $match3 = "/\s\(/";
  11. $match4 = "/\)/";
  12. $match5 = "/[0-9]{1,0[^\.]/";
  13.  
  14. $parts1 = preg_replace($match1,"",$line );
  15. $parts2 = preg_replace($match2,$parts1 );
  16. $parts3 = preg_replace($match3,",$parts2 );
  17. $parts4 = preg_replace($match4,$parts3 );
  18. $parts5 = preg_replace($match5,$parts4);
  19.  
  20.  
  21. echo "<pre>";
  22. print_r($parts5);
  23. echo "</pre>";
  24.  
  25. fwrite($fg,$parts5);
  26. }
  27.  
  28. fclose($fg);
  29. fclose($fh);

但是这个代码出现了新的问题,我在浮点上得到了两倍或三倍@H_403_6@比赛结束后.

  1. $thisisit[] = "";
  2. $thisisit2[] = "";
  3. $countThis = 0;
  4. $fh = fopen("sometext.txt","r");
  5. $new_array = ""; $parts = "";
  6. while (!feof($fh)) {
  7. $line = fgets($fh);
  8. $line2 = $line;
  9. $newword = "";
  10. $match1 ="/^\s*?[\d]+,[\d]+/";
  11. $parts1 = preg_match($match1,$line,$regs);
  12. foreach($regs as $key => $lame) {
  13. $thisisit[] = $lame;
  14. }
  15. $match2 ="/(?:(\d{1,\d{1,))(\d{1,[01][\.]?[\d]*)/";
  16. $parts2 = preg_match($match2,$line2,$regs2);
  17. foreach($regs2 as $key2 => $lame2) {
  18. $thisisit2[] =$lame2;
  19. }
  20. $countLame = count($thisisit);
  21. }
  22.  
  23. echo "</script>";
  24. $newCounter = 0;
  25. for($i = 0; $i < (500); $i++) {
  26. echo $thisisit[$i] . "<br />";
  27. echo $thisisit2[$newCounter] . "<br />" ;
  28. $newCounter = $newCounter +4;
  29. }
  30. fclose($fh);

这是我正在处理的文本文件中的一些文本

  1. 42,23,162,0.156863
  2. 43,0.156863
  3. 44,170,67,0.219608
  4. 45,0.156863
  5. 46,0.219608
  6. 47,37,0.117647
  7. 48,0.0941176
  8. 86,163,40,0.12549
  9. 87,160,164,0.164706
  10. 88,188,190,122,0.352941
  11. 86,24,233,234,197,0.486275
  12. 87,251,250,1
  13. 88,1
  14. 89,1
  1. > '0,0)'.match(/^([^:]+) *: *\(([^)]+)\)/)
  2. [ '0,0)','0,0','255,index: 0,input: '0,0)' ]

猜你在找的PHP相关文章