Найти - Пользователи
Полная версия: wx.Python как можно вытащить уменьшенную копию из jpg-файла?
Начало » GUI » wx.Python как можно вытащить уменьшенную копию из jpg-файла?
1
FoxPython
Я уж задал такой вопрос в одной из других тем, уж прошу прощенья, но может быть в новой теме быстрее ответит кто-нибудь.

Насколько я догадываюсь, jpg-файлы, во всяком случае те, что из фотоаппарата, содержат в себе мини-копию самого себя, используемую для быстрого предпросмотра. Если я не ошибаюсь в этом, то можно ли как-нибудь посредством wx.питона вытащить эту мини-копию?

Пробую написать программку, которая выдаёт в лист-контроль список jpg-файлов и их мини-изображений. Пока что додумался делать мини-изображения при помощи Rescale, т.е. каждый раз при старте программы она просматривает список файлов в текущей директории, считывает каждый jpg-файл, Rescale'ит их в нужный маленький размер и сохраняет уменьшенные копии файлов в массив. Но рескалить файлы размером 2-3, а то и более мегабайт - дело небыстрое. Программа выходит тормозная - долго запускается (файлы перелопачивает) прежде чем главное окно появится.

Есть идеи? Заранее спасибо.
FoxPython
Никак? :(
pythonwin
посмотри PIL - там можно уменьшать рисунки. также можешь посмотреть imagemagick
FoxPython
Насколько я догадываюсь, jpg-файлы, во всяком случае те, что из фотоаппарата, содержат в себе мини-копию самого себя, используемую для быстрого предпросмотра.
впервые слышу - можно ссылку?
FoxPython
pythonwin
PIL и ImageMagik, я так думаю - это самостоятельные программы? Мне не это нужно.
Rescale - не программа, а метод wx.Python'а относящийся к объекту wx.Image (если не подзабыл, пока ещё в памяти всё не уложилось).
Вот им я и делаю уменьшенные копии jpg-файлов, для того чтобы затем можно было сделать список файлов с картинками в wx.ListCtrl.

Насчёт наличия уменьшенной копии самого себя в jpg-файлах - это лишь моё предположение. Имеется программка, которая позволяет редактировать exif jpg-файлов. Так вот, если удалить весь exif, то в этой же программе пропадёт уменьшенная копия-предпросмотр такого jpg-файла, а windows'у тоже придётся заново перерисовать предпросмотры в explorer'е для таких файлов (если открыть папку с jpg-файлами, то, как известно, винда имеет один из видов отображения файлов-рисунков “эскизы страниц”. В окошке с открытой папкой и jpg-файлами в ней при вышеописанной процедуре на время и исчезают эти самые “эскизы”. Затем винда срочно их перерисовывает. Толи сама так быстро делает копии уменьшенные, то ли ещё как).
setoy
>>PIL и ImageMagik, я так думаю - это самостоятельные программы? Мне не это нужно.

PIL = Python Image Library
Ето то, что тебе нужно. http://www.pythonware.com/products/pil/
Лень спросить google?

>> Насколько я догадываюсь, jpg-файлы, во всяком случае те, что из фотоаппарата, содержат в себе мини-копию самого себя, используемую для быстрого предпросмотра.

Нечего подобнее. ето простая побитовая компресия.

>>винда имеет один из видов отображения файлов-рисунков “эскизы страниц”. В окошке с открытой папкой и jpg-файлами в ней при вышеописанной процедуре на время и исчезают эти самые “эскизы”

Как винд работать с thumbsnail - это дело самому винду. Полагаю, единствений начин делать это - обработяеть их и сохраняю умаленний jpeg как kэш куда-то. То же самое можешь сделать и ты.

Я думаю, тебя нужно читать чуть побольше :)

Извини про не очень хороший руский язык :)
poltergeist
Винда пишет превьюшки изображений в скрытый файл Thumbs.db в той же директории, естественно, что после малейшего изменения даже просто метаданных файла, превьюшки генерятся заново для этих файлов. Винда сама их скалирует, тем более виста, которая может показывать превьюхи разного размера.

Но эта инфа ни к чему, юзай google.
FoxPython
setoy
poltergeist
Спасибо за информацию. Про Thumbs.db я, вобщем-то, догадывался.


setoy
обработяеть их и сохраняю умаленний jpeg как kэш куда-то
Вобщем, я практически так и делаю. Просто папка-то в моей программе будет открываться каждый раз разная, с любого носителя. Не запоминать же мне превьюшки в каждой папке, тем более, что моя же программа может переименовать файлы. Программа нужна для автоматического переименования файлов, чтобы подготовить их для печати в фотолабе. Т.е. бестолку сохранять куда-то превьюшки, чтобы потом их снова можно было взять быстренько. В итоге мне придётся каждый раз при заходе в программу создавать превьюшки и хранить в списке. А это дело тормозное. Винда побыстрее управляется с этим.

А PIL глянем, может чем поможет.
setoy
using PIL, думаю можно улучшить быстродействие в несколько раз, но все так не ожидай чудес :)


 import Image
im = Image.open(infile)
im.thumbnail(size)
im.save(outfile, "JPEG")
Я не знаю что делает этот ReScale, но полагаю, что ничего не теряется в процессе, так что уменьшение размерами приводить к более высокая резолюция. А маленький картинки с высокая резолюция можно быть больше тормозные, чем большие изображение с ниская резолюция :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB