Преобразование Доступа MS “Объекты OLE” назад к простому JPEGs - лучший способ?

Cross Platform, код Python 2/3:

# import sys, os

def wait_key():
    ''' Wait for a key press on the console and return it. '''
    result = None
    if os.name == 'nt':
        import msvcrt
        result = msvcrt.getch()
    else:
        import termios
        fd = sys.stdin.fileno()

        oldterm = termios.tcgetattr(fd)
        newattr = termios.tcgetattr(fd)
        newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
        termios.tcsetattr(fd, termios.TCSANOW, newattr)

        try:
            result = sys.stdin.read(1)
        except IOError:
            pass
        finally:
            termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)

    return result

Я удалил материал fctl / non-blocking, потому что он дал IOError s, и мне это не нужно. Я использую этот код специально, потому что хочу его заблокировать. ;)

5
задан Keith Williams 22 September 2008 в 11:28
поделиться

4 ответа

Возьмите *.bas файл отсюда http:http://stackoverflow.com/Content/img/wmd/ul.png//www.access-im-unternehmen.de/index1.php?BeitragID=337&id=300 (к сожалению, это является немецким).

Это использует GDI + lib от MS (включенный в установку стандарта Win) для импортирования/экспортирования рисунков для Доступа к OLE.

Грубый перевод интерфейса:

  • IsGDIPInstalled: Проверки на установку GDI +
  • InitGDIP: Init GDI +.
  • ShutDownGDIP: Deinit GDI + (важный, чтобы использоваться!)
  • LoadPictureGDIP: рис. Загрузок в объекте StdPicture (bmp, gif, мировой судья (e) g, tif, png, wmf, эдс и ico).
  • ResampleGDIP: рис. Масштабов к новым размерам и увеличивает резкость в случае необходимости.
  • MakeThumbGDIP: Делает миниатюру и заполняет границу с цветом.
  • GetDimensionsGDIP: Получите размеры в TSize-Struktur в пикселе.
  • SavePicGDIPlus: Сохраняет объект Изображения в файле как BMP, GIF, PNG или JPG (jpg с данным качеством)
  • ArrayFromPicture: Возвращает массив байтов picutre для помещения рис. в поле OLE таблицы
  • ArrayToPicture: Создает массив байтов поля OLE таблицы, содержащей изображение
5
ответ дан 14 December 2019 в 09:05
поделиться

Используйте инструмент Lebans ExtractInventoryOLE MVP Доступа Stephen для извлечения Объектов OLE из таблицы для разделения файлов.

http://www.lebans.com/oletodisk.htm

Согласно Lebans: "Не требует исходного приложения, которое служило сервером OLE для вставки объекта. Поддержки все документы MS Office, PDF, Все изображения, вставленные Редактором фотографий MS, Краской MS и Paint Shop Pro. Также извлечение поддержек класса ПАКЕТА включая исходное Имя файла".

Кроме того, Доступ 2 007 Объектов OLE хранилищ намного более эффективно, чем исторические форматы BMP предыдущих версий, таким образом, Вы имели бы меньшее пространство памяти и смогли бы сохранить свое приложение Доступа при преобразовании его из 600+GB устройство хранения данных SQL Server к Доступу 2007 accdb формат. Ваше время резервного копирования было бы управляемо, и Вы не должны будете проводить время, преобразовывая фронтэнд Доступа в веб-фронтэнд.

1
ответ дан 14 December 2019 в 09:05
поделиться
1
ответ дан 14 December 2019 в 09:05
поделиться

Я думаю причина, Ваша база данных становится столь чрезмерно увеличенной в размере, то, что JPGs также хранятся как битовые массивы в структуре "Объекта OLE", или таким образом, я видел, в зависимости от метода, JPEG был вставлен.

Это не оптимально, но: для каждого изображения в базе данных я программно создал бы макет .doc содержащий просто изображение, затем передал бы его через преобразование OpenOffice и извлек бы JPEG из подпапки изображений представленного документа OpenOffice (который является zip-файлом).

Я затем заменил бы документы OLE в базе данных с необработанными данными JPEG, но затем у меня нет способа для Вас явно отобразить их в пользовательском приложении (если это не веб-приложение).

0
ответ дан 14 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: