2012-04-20 21 views
0

私はCorrupt(jpeg画像を使用して「グリッチ」効果を得るために使用されるウェブベースのソフトウェア)から取得した機能を使用しています。この関数は、23行目のcorrupt.phpファイルにあります。現時点では、ファイルが十分に不安定になっていません。私はthis imagesを作り、イメージをどのように見せたいかを示しました。これは、テキストエディタでjpegを開き、特定の行を切り取り、別の場所に貼り付けることによって行われました。誰もこのスクランブリング機能の仕組みを説明できますか?

私はこの機能を似たようにしたいが、現時点ではそうしたくない。何か案は?これをやるより良い方法がありますか?

function scramble($content, $size) { 
    $sStart = 10; 
    $sEnd = $size-1; 
    $nReplacements = rand(1, 30); 

    for($i = 0; $i < $nReplacements; $i++) { 
     $PosA = rand($sStart, $sEnd); 
     $PosB = rand($sStart, $sEnd); 

     $tmp = $content[$PosA]; 
     $content[$PosA] = $content[$PosB]; 
     $content[$PosB] = $tmp; 
    } 

    return($content); 
} 
+0

これはファイルの内容を変更する非常に素朴な方法であり、おそらく完全に使用できない(本当に破損した)ファイルになることに注意してください。ファイルをGDイメージとして開き、ピクセルデータを変更する方が安全でしょう。 jpegファイル形式には多くの種類のブロックがあり、そのほとんどは可変ブロックサイズです。あなたは間違ったビットをひねり、画像データではなくヘッダーを破損しています。 – horatio

答えて

1

画像から読み込まれたデータ配列内の情報はランダムに入れ替えられます。これにより、一部のセクタで無効なイメージ情報が有効なイメージに出力されます。また、画像ファイルには、ファイルの先頭/末尾に追加情報が含まれることがあります。これはそれが考慮に入れられていないように見え、その情報も壊れる可能性があります。

スワップの量を増やすには、置換の数を増やすことをお勧めします。あなたが特に興味を持っているコードはrand(1, 30);です。あなたがまだ希望の効果を得ていない場合は、最初にスクランブルの最小量を増やし、その後に上限を増やすことをお勧めします。

+0

あなたの助けてくれてありがとう、それはすごくうまくいった。 – Chrish

1

この関数は、配列の要素間のランダムスワップを行います。スワップの数は1から30の範囲でランダムに生成されます。

関連する問題