Модуль запросов может соответствовать тому, что вы хотите сделать, используя кортеж или словарь. В качестве примера ниже я передал словарь settings_json
в родительский словарь data
.
Вы можете попробовать что-то вроде следующего:
import requests
url = 'https://example.com/v1/doThing'
settings_json = {
'name': 'bob',
'age': 57
}
data = {
'mode': 'merge',
'json_data': settings_json
}
r=requests.post(url, auth=(myToken,'password'), data=data)
Если это не работает для вашего случая использования, вы всегда можете обратиться к документам запросов для дополнительных примеров. [118 ]
Точный формат запроса будет зависеть от того, как настроен ваш сервер для получения этих данных.
Этот также является полезным инструментом для преобразования curl
запросов в другие языки.
Не совсем. Что вы можете сделать, так это изменить их размер в фоновом потоке и использовать изображение «заполнитель», пока изменение размера не будет выполнено. Затем я бы сохранил эти изображения с измененным размером в какой-то файл кеша для последующей обработки (Windows делает это и вызывает кеш thumbs.db в текущем каталоге).
У вас есть несколько вариантов в самой архитектуре потока. Один поток, который выполняет все изображения, или пул потоков, в котором поток знает, как обрабатывать только одно изображение. Библиотека AsyncCalls - это еще один способ сделать вещи довольно простыми.
Используйте возможности Windows для создания миниатюр. Помните, что скрытые файлы Thumbs.db в папках, которые содержат изображения?
Я реализовал нечто подобное этой функции, но в VB. Мое программное обеспечение способно создавать эскизы из 100 файлов (смешанного размера) примерно за 10 секунд.
Однако я не могу преобразовать его в Delphi.
I often use TJPEGImage with Scale:=jsEighth (in Delphi 7). This is really fast because the JPEG de-compression can skip a lot of the data to fill a bitmap of only an eighth of width and height.
Another option is to use the shell's method to extract a thumbnail, which is pretty fast as well
Я дополню ответ skamradt попыткой сделать его максимально быстрым. Для этого вы должны
Использование нескольких потоков подразумевает, что использование классов VCL для изменения размера не сработает, поскольку VCL не является потокобезопасным, и все хаки вокруг, которые плохо масштабируются. Компьютерная лаборатория efg содержит ссылки для кода обработки изображений.
Важно не вызывать несколько одновременных операций ввода-вывода при использовании нескольких потоков. Если вы решите записать миниатюрные изображения обратно в файлы, то, как только вы начнете читать файл, вы должны прочитать его полностью, и как только вы начали писать файл, вы также должны написать его полностью. Чередование обеих операций убьет ваш ввод-вывод, потому что вы потенциально вызовете множество операций поиска головки жесткого диска.
Для достижения наилучших результатов чтение (и запись) файлов также не должно происходить в основном (GUI) потоке. вашего приложения. Это предполагает следующую схему:
Изменить:
При повторном чтении вашего вопроса я заметил, что вам, возможно, нужно изменить размер только одного изображения, и в этом случае один фоновый поток является конечно достаточно. Я все равно оставлю свой ответ на месте, может быть, когда-нибудь он будет кому-нибудь полезен. Это то, что я узнал из одного из моих последних проектов, в котором финальной программе могло потребоваться немного больше скорости, но в часы пик использовалось только около 75% четырехъядерной машины. Разделение ввода-вывода и обработки имело бы значение.
Это то, что я узнал из одного из моих последних проектов, в котором финальной программе могло потребоваться немного больше скорости, но в часы пик использовалось только около 75% четырехъядерной машины. Разделение ввода-вывода и обработки имело бы значение. Это то, что я узнал из одного из моих последних проектов, в котором финальной программе могло потребоваться немного больше скорости, но в часы пик использовалось только около 75% четырехъядерной машины. Разделение ввода-вывода и обработки имело бы значение.I'm in the vision business, and I simply upload the images to the GPU using OpenGL. (typically 20x 2048x2000x8bpp per second), a bmp per texture, and let the videocard scale (win32, Mike Lischke's opengl headers)
Upload of such an image costs 5-10ms depending on exact videocard (if not integrated and nvidia 7300 series or newer. Very recent integrated GPUs might be doable also). Scaling and displaying costs 300us. Which means customers can pan and zoom like crazy without touching the app. I draw an overlay (which used to be a tmetafile but is now an own format) on top of it.
My biggest picture is 4096x7000x8bpp which shows and scales in under 30ms. (GF 8600)
A limitation of this technology is max texture size. It can be resolved by fragmenting the picture into multiple textures, but I haven't bothered yet because I deliver the systems with the software.
(some typical sizes: nv6x00 series: 2k * 2k, но загрузка почти безубыточна по сравнению с GDI nv7x00 series: 4k * 4k Для меня базовые карты. GF7300 стоят примерно 20-40 долларов серия nv8x00: 8k * 8k )
Обратите внимание, что это может быть не для всех. Но если вам повезет указать ограничения на оборудование, это может сработать. Основная проблема - ноутбуки, такие как Thinkpads, графические процессоры которых старше, чем у портативных компьютеров avg, которые, в свою очередь, часто уступают поколениям настольных компьютеров.
Я выбрал OpenGL, а не DirectX, потому что он более статичен во времени и его легче найти - примеры, связанные с игрой.
Попробуйте взглянуть на библиотеку Graphics32 : она очень хороша для рисования и отлично работает с растровыми изображениями. Они являются потокобезопасными с хорошим примером, и это совершенно бесплатно.