14

TIFF画像をロードするために使用PIL==1.1.7すると、色空間が間違っているようです。

悪い色空間変換

どうしたの?

  • を使用.tiffして作成されましたconvert test.jpg test.tiff(ただし、他のtiffファイルでも発生するようです)
  • それはで見つけることができます:http://hul.wolever.net/dump/test.tiff
  • 次の場合の出力PIL.Image.DEBUG = True
>>>PILインポート画像から
>>> Image.DEBUG = True
>>> Image.open( "/ tmp / test.tiff")。show()
タグ:ImageWidth(256)-タイプ:short(3)-値:(560、)
タグ:ImageLength(257)-タイプ:short(3)-値:(401、)
タグ:BitsPerSample(258)-タイプ:short(3)-値:(8、8、8)
タグ:圧縮(259)-タイプ:短い(3)-値:(7、)
タグ:PhotometricInterpretation(262)-タイプ:short(3)-値:(2、)
タグ:FillOrder(266)-タイプ:short(3)-値:(1、)
タグ:DocumentName(269)-タイプ:ascii(2)-値:/tmp/lemur.tiff
タグ:StripOffsets(273)-タイプ:long(4)-値:(8、9282、18712、28312、38000、48730、59052、70406、83010、95978、108967、121029、133136、145555、157411、168289、179433 、191157、202954、214664、226914、238919、250547、261871、273282、284453)
タグ:向き(274)-タイプ:短い(3)-値:(1、)
タグ:SamplesPerPixel(277)-タイプ:short(3)-値:(3、)
タグ:RowsPerStrip(278)-タイプ:short(3)-値:(16、)
タグ:StripByteCounts(279)-タイプ:long(4)-値:(9274、9430、9600、9688、10730、10322、11354、12604、12968、12989、12062、12107、12419、11856、10878、11144、11724 、11797、11710、12250、12005、11628、11324、11411、11171、2541)
タグ:XResolution(282)-タイプ:rational(5)-値:((1207959552、16777216)、)
タグ:YResolution(283)-タイプ:rational(5)-値:((1207959552、16777216)、)
タグ:PlanarConfiguration(284)-タイプ:short(3)-値:(1、)
タグ:ResolutionUnit(296)-タイプ:short(3)-値:(1、)
タグ:PageNumber(297)-タイプ:short(3)-値:(0、1)
タグ:JPEGTables(347)-タイプ:未定義(7)-値:???? C ??

???}!1AQa "q2 ??#B ?? R ?? $ 3br?  
%&'()* 456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ????????????????????????????????????????? ??????????????????????????????????
タグ:YCbCrSubSampling(530)-タイプ:short(3)-値:(2、2)
*** 概要 ***
-圧縮:jpeg
--photometric_interpretation:2
--planar_configuration:1
--fill_order:1
-サイズ:(560、401)
フォーマットキー:('II'、2、1、1、(8、8、8)、())
-rawモード:RGB
-ピルモード:RGB
4

1 に答える 1

12

これは、TIFF 画像に、Adobe Photoshop によって生成された圧縮 JPEG データが含まれていることが原因である可能性が高く、特別なマーカーを使用して正しい色空間を示しています。PIL はこのマーカーを (少なくとも TIFF 埋め込みの JPEG では) 認識していないので、画像が YCbCr 色空間 (スクリーンショットで確認できます) にあると想定しています。

ここで詳細な回答を参照してください。まさにあなたのケースだと思います。

考えられる解決策は、JPEG を他の方法で (圧縮された JPEG データなしで) 変換することです。たとえば、PIL で JPEG を正しく開くことができた場合は、TIFF を PIL で書き換えることができます。

from PIL import Image
img = Image.open("test.jpg")
tif = Image.new("RGB", img.size)
tif.paste(img)
tif.save('result.tiff')
于 2012-10-18T05:15:59.953 に答える