Работа с усеченными изображениями с PILPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Работа с усеченными изображениями с PIL

Сообщение Anonymous »

Я пытаюсь заставить библиотеку Python 2.7 PIL работать с изображениями JPEG, которые доступны только в виде потока, исходящего из HDD -изображения и не завершены. < /p>

Я установил опцию: < /p>

Код: Выделить всё

ImageFile.LOAD_TRUNCATED_IMAGES = True
< /code>

и загрузите поток до самого доступного (или лучше сказал: Насколько я на 100% уверен, что эти данные по -прежнему остаются изображением, а не каким -то другим типом файла). Я проверил разные вещи, и, насколько я могу судить (для JPEGS) PIL принимает его как действительное изображение JPEG, только если он находит 0xffda 
(начало маркера сканирования). Это короткий пример того, как я загружаю данные: < /p>

from PIL import Image
from StringIO import StringIO

ImageFile.LOAD_TRUNCATED_IMAGES = True

with open("/path/to/image.raw", 'rb') as fp:
fp.seek("""jump to position in image where JPEG starts""")
data = fp.read("""number of bytes I know that those belong to that jpeg""")
img = Image.open(StringIO(data)) # This would throw exception if the data does
# not contain the 0xffda marker
pixel = img.load() # Would throw exception if LOAD_TRUNCATED_IMAGES = false

height,width = img.size
for i in range(height):
for j in range(width):
print pixel[i,j]
< /code>

В самой последней строке, которую я ожидал (или надеялся), чтобы увидеть, по крайней мере, данные считывания пикселей, которые будут отображаться. Но для каждого пикселя он возвращается (0,0,0) < /code>. < /P>

Вопрос: то, что я стараюсь здесь, невозможно с pil? Это работало для пиксельных данных, которые были доступны. Как только он достиг пикселя, который я отрезал, программа бросила исключение (я попробую это еще раз сегодня, чтобы убедиться, что я не помню неправильно).

Если кто -то задается вопросом, почему я делаю это: мне нужно убедиться, что изображение/изображение внутри этого HDD -изображения находится в последовательных блоках/кластерах и не фрагментировано. Чтобы убедиться в этом, я хотел использовать соответствие пикселей. < /p>

edit: < /strong>
Я снова попробовал это, и это то, что я видел. Он всегда возвращается (0,0,0).
Я сделал изображение немного больше, так что нижние 4/5 изображения не было видно, но этого было достаточно, чтобы PIL показал мне значения RGB, которые были доступны. Все остальное было (0,0,0). < /P> < /li>
< /ul>

Я все еще не уверен на 100%, может ли PIL показать мне значения RGB, даже если доступен только Pixel-Data.

Подробнее здесь: https://stackoverflow.com/questions/267 ... s-with-pil
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Работа с усеченными изображениями с помощью PIL
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Работа с усеченными изображениями с помощью PIL
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Работа с усеченными изображениями с PIL
    Anonymous » » в форуме Python
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Средняя разница в квадратах между двумя изображениями, используя Python и PIL
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Средняя разница в квадратах между двумя изображениями, используя Python и PIL
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»