powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как вытащить картинку из аксесса (OLE объект) и сохранить в файл
4 сообщений из 4, страница 1 из 1
как вытащить картинку из аксесса (OLE объект) и сохранить в файл
    #32180697
andrey gs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья!

сижу, пишу интерфейсы на asp для доступа к msaccess-базе через сетку. но поскольку картинки сохранены прямо в базе, да ещё и с расширением .tif, было решено их вытащить и сохранить в jpg, с меньшим размером, и задать имя по ключевому индексу таблицы в которой они хранятся, что бы потом можно было генерировать ссылочку и легко вытаскивать картинку. помогите вытащить картинки, их там много, база не сжимается, весит не меньшне борца суммо. поискал исходники, статьи на подобную тему.. вообщем пока ни чего, ещё и начальник звереет, по этому поводу.

так что, чертовски нужна помощь!


зы: картинка с именами полей: http://www.geocities.com/s99139/andrew.jpg
...
Рейтинг: 0 / 0
как вытащить картинку из аксесса (OLE объект) и сохранить в файл
    #32180836
narval
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М-м-м... Ведь в поля таблицы акцесса сохраняется не исходный файл рисунка, т.е. не бинарный jpg или там bmp. Сохраняются данные рисунка вместе с данными о приложении которое будет этот рисунок обрабатывать при показе его например в форме. Отсюда вывод - отделять мух от котлет придется с помощью интерфейса который предостовляет (или не предоставляет :-) приложение обработчик... Я прав?
...
Рейтинг: 0 / 0
как вытащить картинку из аксесса (OLE объект) и сохранить в файл
    #32180893
andrey gs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо разным вэб ресурсам,
в результате чего я почти докопался до цели, если бы не одно "но".

Этот код полностью выполняет задачу, единственное что осталось для меня загадкой, так это то, что, полученный файл не открывается как картинка. потому как в нём, большинство символов, заменены на знаки вопроса, т.о. файл вроде бы и содержит данные, да не те что надо..

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Sub test()
    Call RestoreFile( "D:\temp" )
End Sub

Public Sub RestoreFile(Path As String)

    Dim DB As DAO.Database
    Dim RS As DAO.Recordset
    Dim FF As Long
    Dim NewFileName As String
    
    Set DB = CurrentDb
    Set RS = DB.OpenRecordset( "SELECT * FROM tblCertPictures" , )
    dbOpenSnapshot
    
            Path = Trim(Path)
            If Right(Path,  1 ) =  "\"  Then
                Path = Left(Path, Len(Path) -  1 )
            End If
    
    With RS
        Do While Not .EOF
            FF = FreeFile()
            NewFileName = CStr(RS![ID]) &  ".tif" 
            
                Open Path &  "\"  & Trim(NewFileName) For Output Access Write Lock Write As #FF
                Write #FF, RS![Picture]
                Close FF
            .MoveNext
        Loop
    End With

    Set RS = Nothing
    Set DB = Nothing
End Sub



так должен выглядеть файл: (http://www.geocities.com/s99139/right.gif)

Код: plaintext
II*    вфьхуьяыъъъъъъъъъъъъъъъъэээээээээээээээээ


а так получается: (http://www.geocities.com/s99139/bag.gif)

Код: plaintext
?*H ????? 0  ???????????:????:????:  ?   A ? a



..кстати у меня винда - 2000-я - английская, а офис - xp - русский. может что то, из перечисленного, просто глючит? что делать?
...
Рейтинг: 0 / 0
как вытащить картинку из аксесса (OLE объект) и сохранить в файл
    #32180993
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey gs - зря вы не слушаете что сказал вам narval .

вы пытаетесь сохранить в файл не содержимое файла, которое соответствует оле- объекту а данные оле - объекта

формат данных совершенно другой.

если бы вы в базе держали не оле-объекты а содержимое файлов то у вас все бы получилось.

для сохранения оле в файл надо активизировать связанное с данным типом оле приложение и давать ему команду saveas

кроме того хранить оле в базе данных крайне неэкономично так как JPG файл сохраненный в бд в виде OLE занимает столько же места сколько и BMP
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как вытащить картинку из аксесса (OLE объект) и сохранить в файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]