Advertisement
Guest User

Untitled

a guest
Oct 15th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4.  
  5. our $mergebinhigh;
  6. our $mergebinlow;
  7. our $mergelength=0;
  8. our $headerlength = 55;
  9.  
  10. use Getopt::Long;
  11. our ($filename, $startnum, $endnum, $outputhigh, $outputlow, $uebertraghigh, $uebertraglow, $delete);
  12.  
  13.  
  14.  
  15. GetOptions('filename=s' => \$filename, 'startnum=s' => \$startnum, 'endnum=s' => \$endnum,
  16. 'outputhigh=s' => \$outputhigh, 'outputlow=s' => \$outputlow, 'uebertraghigh=s' => \$uebertraghigh, 'uebertraglow=s' => \$uebertraglow, 'delete=s' => \$delete) or die("Error in command line arguments\n");;
  17.  
  18.  
  19.  
  20. if (-e $uebertraghigh)
  21. {
  22. addimage($uebertraghigh, 'high');
  23. unlink($uebertraghigh) if ($delete);
  24. }
  25.  
  26. if (-e $uebertraglow)
  27. {
  28. addimage($uebertraglow, 'low');
  29. unlink($uebertraglow) if ($delete);
  30. }
  31.  
  32. for (my $num = $startnum; $num <= $endnum; $num++)
  33. {
  34. my $filenumname = $filename;
  35. $filenumname=~s/%NUM%/$num/gi;
  36. if (-e $filenumname)
  37. {
  38. if (($outputhigh) && ($outputlow))
  39. {
  40. addimage($filenumname);
  41. }
  42. elsif ($outputhigh)
  43. {
  44. addimage($filenumname,'high');
  45. }
  46. elsif ($outputlow)
  47. {
  48. addimage($filenumname,'low');
  49. }
  50. unlink($filenumname) if ($delete);
  51. }
  52. else
  53. {
  54. print "merging: $filenumname file not found!!!\n";
  55. }
  56. }
  57.  
  58. #### output file
  59. if ($outputhigh)
  60. {
  61. open (FILE, '>:raw',$outputhigh) || die ("canot open $outputhigh because of $!");
  62. binmode (FILE);
  63. print FILE $mergebinhigh;
  64. close (FILE);
  65. print "[$$] merging finished $filename $startnum .. $endnum to $outputhigh\n";
  66. }
  67.  
  68. if ($outputlow)
  69. {
  70. open (FILE, '>:raw',$outputlow) || die ("canot open $outputhigh because of $!");
  71. binmode (FILE);
  72. print FILE $mergebinlow;
  73. close (FILE);
  74. print "[$$] merging finished $filename $startnum .. $endnum to $outputhigh\n";
  75. }
  76.  
  77. #print "\n" . `ps $$` . "\n";
  78. exit;
  79.  
  80.  
  81.  
  82. sub addimage
  83. {
  84. my ($filename, $modus) = @_;
  85. open (FILE, '<:raw',$filename) || die ("canot open $_[0] because of $!");
  86. binmode (FILE);
  87. read FILE, my $content, 100000000;
  88. close (FILE);
  89. #print "datei $_[0] gelesene bytes: " . length($content) . "\n";
  90.  
  91.  
  92. if ($mergelength eq 0)
  93. {
  94. $mergelength = length($content);
  95. $mergebinhigh = $content;
  96. $mergebinlow = $content;
  97. #print "first image $filename loaded.\n";
  98. return;
  99. }
  100. if ($mergelength ne length($content))
  101. {
  102. print "file length of $filename not matches others! skipping.\n";
  103. return;
  104. }
  105.  
  106. #print "merging $filename ...\n";
  107. my ($a, $b);
  108. my $mergeddata;
  109. if ($modus ne 'low')
  110. {
  111. $mergeddata = substr($mergebinhigh,0,$headerlength);
  112.  
  113. for (my $i = $headerlength; $i<=$mergelength;$i++)
  114. {
  115. $a = substr($mergebinhigh,$i,1);
  116. $b = substr($content,$i,1);
  117.  
  118. if ($a ge $b)
  119. {
  120. $mergeddata .= $a;
  121. }
  122. else
  123. {
  124. $mergeddata .= $b;
  125. }
  126. }
  127. $mergebinhigh = $mergeddata;
  128. }
  129.  
  130. if ($modus ne 'high')
  131. {
  132. $mergeddata = substr($mergebinlow,0,$headerlength);
  133. for (my $i = $headerlength; $i<=$mergelength;$i++)
  134. {
  135. $a = substr($mergebinlow,$i,1);
  136. $b = substr($content,$i,1);
  137.  
  138. if ($a lt $b)
  139. {
  140. $mergeddata .= $a;
  141. }
  142. else
  143. {
  144. $mergeddata .= $b;
  145. }
  146. }
  147. $mergebinlow = $mergeddata;
  148. }
  149.  
  150. return;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement