Форум сайта python.su
Я уж задал такой вопрос в одной из других тем, уж прошу прощенья, но может быть в новой теме быстрее ответит кто-нибудь.
Насколько я догадываюсь, jpg-файлы, во всяком случае те, что из фотоаппарата, содержат в себе мини-копию самого себя, используемую для быстрого предпросмотра. Если я не ошибаюсь в этом, то можно ли как-нибудь посредством wx.питона вытащить эту мини-копию?
Пробую написать программку, которая выдаёт в лист-контроль список jpg-файлов и их мини-изображений. Пока что додумался делать мини-изображения при помощи Rescale, т.е. каждый раз при старте программы она просматривает список файлов в текущей директории, считывает каждый jpg-файл, Rescale'ит их в нужный маленький размер и сохраняет уменьшенные копии файлов в массив. Но рескалить файлы размером 2-3, а то и более мегабайт - дело небыстрое. Программа выходит тормозная - долго запускается (файлы перелопачивает) прежде чем главное окно появится.
Есть идеи? Заранее спасибо.
Офлайн
Никак? :(
Офлайн
посмотри PIL - там можно уменьшать рисунки. также можешь посмотреть imagemagick
FoxPythonвпервые слышу - можно ссылку?
Насколько я догадываюсь, jpg-файлы, во всяком случае те, что из фотоаппарата, содержат в себе мини-копию самого себя, используемую для быстрого предпросмотра.
Офлайн
pythonwin
PIL и ImageMagik, я так думаю - это самостоятельные программы? Мне не это нужно.
Rescale - не программа, а метод wx.Python'а относящийся к объекту wx.Image (если не подзабыл, пока ещё в памяти всё не уложилось).
Вот им я и делаю уменьшенные копии jpg-файлов, для того чтобы затем можно было сделать список файлов с картинками в wx.ListCtrl.
Насчёт наличия уменьшенной копии самого себя в jpg-файлах - это лишь моё предположение. Имеется программка, которая позволяет редактировать exif jpg-файлов. Так вот, если удалить весь exif, то в этой же программе пропадёт уменьшенная копия-предпросмотр такого jpg-файла, а windows'у тоже придётся заново перерисовать предпросмотры в explorer'е для таких файлов (если открыть папку с jpg-файлами, то, как известно, винда имеет один из видов отображения файлов-рисунков “эскизы страниц”. В окошке с открытой папкой и jpg-файлами в ней при вышеописанной процедуре на время и исчезают эти самые “эскизы”. Затем винда срочно их перерисовывает. Толи сама так быстро делает копии уменьшенные, то ли ещё как).
Офлайн
>>PIL и ImageMagik, я так думаю - это самостоятельные программы? Мне не это нужно.
PIL = Python Image Library
Ето то, что тебе нужно. http://www.pythonware.com/products/pil/
Лень спросить google?
>> Насколько я догадываюсь, jpg-файлы, во всяком случае те, что из фотоаппарата, содержат в себе мини-копию самого себя, используемую для быстрого предпросмотра.
Нечего подобнее. ето простая побитовая компресия.
>>винда имеет один из видов отображения файлов-рисунков “эскизы страниц”. В окошке с открытой папкой и jpg-файлами в ней при вышеописанной процедуре на время и исчезают эти самые “эскизы”
Как винд работать с thumbsnail - это дело самому винду. Полагаю, единствений начин делать это - обработяеть их и сохраняю умаленний jpeg как kэш куда-то. То же самое можешь сделать и ты.
Я думаю, тебя нужно читать чуть побольше :)
Извини про не очень хороший руский язык :)
Офлайн
Винда пишет превьюшки изображений в скрытый файл Thumbs.db в той же директории, естественно, что после малейшего изменения даже просто метаданных файла, превьюшки генерятся заново для этих файлов. Винда сама их скалирует, тем более виста, которая может показывать превьюхи разного размера.
Но эта инфа ни к чему, юзай google.
Отредактировано (Дек. 19, 2007 19:37:41)
Офлайн
setoy
poltergeist
Спасибо за информацию. Про Thumbs.db я, вобщем-то, догадывался.
setoyВобщем, я практически так и делаю. Просто папка-то в моей программе будет открываться каждый раз разная, с любого носителя. Не запоминать же мне превьюшки в каждой папке, тем более, что моя же программа может переименовать файлы. Программа нужна для автоматического переименования файлов, чтобы подготовить их для печати в фотолабе. Т.е. бестолку сохранять куда-то превьюшки, чтобы потом их снова можно было взять быстренько. В итоге мне придётся каждый раз при заходе в программу создавать превьюшки и хранить в списке. А это дело тормозное. Винда побыстрее управляется с этим.
обработяеть их и сохраняю умаленний jpeg как kэш куда-то
Офлайн
using PIL, думаю можно улучшить быстродействие в несколько раз, но все так не ожидай чудес :)
import Image
im = Image.open(infile)
im.thumbnail(size)
im.save(outfile, "JPEG")
Офлайн