4

PHPでPDFから画像を抽出しようとしています。

部分的に成功しました-グレースケールの画像があります...

PDFからのグレースケール画像

...そして、色を得るには数式を適用する必要があることを知っています!

ただし、最初に、画像のバイナリ データを数値に変換してから、Adobe PDF 仕様書の数式を適用する必要があります。

基本的に、添付された画像 (PDF からのすべてのデータを含む、変更なし) があるとします。

1. CYMK image
2. 8 bit for each component

「画像」セクションの下にある添付のAdobe仕様を使用して、PHPでカラー画像に変換する必要があります。

それを解決するにはどうすればよいですか?

4

2 に答える 2

3

pdfimagesを使用できます。

をインストールすると、パッケージがインストールされますxpdf。マンページでは次のように説明されています。

Pdfimages は、Portable Document Format (PDF) ファイルの画像を Portable Pixmap (PPM)、Portable Bitmap (PBM)、または JPEG ファイルとして保存します。

Pdfimages は PDF ファイルを読み取り、1 つまたは複数のページ、PDF ファイルをスキャンし、画像ごとに 1 つの PPM、PBM、または JPEG ファイル image-root-nnn.xxx を書き込みます。nnn は画像番号、xxx は画像の種類です。 (.ppm、.pbm、.jpg)。

注意: pdfimages は、追加の変換を実行せずに、PDF ファイルから生の画像データを抽出します。PDF コンテンツ ストリームによって行われた回転、クリッピング、色反転などは無視されます。

于 2012-11-01T08:41:52.980 に答える
1

表示している画像はグレースケールではなく、反転しているだけです。カラーバイトを反転してみると、良い色になります。Photoshop が 100% の色を 0x0 として保存するため、JPEG 画像の CMYK カラー保存について騒ぎがあります。

edit : how to invert in PHP, from this blogpostそれはrgbデータに取り組んでおり、CMYKで動作するように適合させる必要があります

<?php
function image_filter_invert(&$image){
    $width = imagesx($image);
    $height = imagesy($image);
    for($x = 0; $x < $width; $x++){
        for($y = 0; $y < $height; $y++){
            $rgb = imagecolorat($image, $x, $y);
            $r = 0xFF-(($rgb>>16)&0xFF);
            $g = 0xFF-(($rgb>>8)&0xFF);
            $b = 0xFF-($rgb&0xFF);
            $color = imagecolorallocate($image, $r, $g, $b);
            imagesetpixel($image, $x, $y, $color);
        }
    }
}

?>
于 2012-11-01T09:55:47.127 に答える