Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: 

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Есть кто живой?
 
 автор: Romiras   (30.11.-1 в 00:00)
 
 

хочется пообщаться на тему бинарного хранения картинок в базе...

  Ответить  
 
 автор: Romiras   (30.11.-1 в 00:00)
 
 

http://hiprog.phpnet.us/hiprog/index.php?id_forum=1

  Ответить  
 
 автор: osmor   (30.11.-1 в 00:00)
 
 

Ты туда пока не пиши ничего серьезного :-)

  Ответить  
 
 автор: ?????? ??????????????   (30.11.-1 в 00:00)
 
 

Re: на тему бинарного хранения картинок в базе спрашивай

  Ответить  
 
 автор: Romiras   (30.11.-1 в 00:00)
 
 

приступим сохраняем бинарным путем бмп - получаем изображение но не то цвета поплыли, это у меня только так или у всех?

[IMG]http://img.photobucket.com/albums/v668/Romiras/Work/photo_bmp.jpg[/IMG]

вставляем джпг - получаем изобажение которое и вставляли...

[IMG]http://img.photobucket.com/albums/v668/Romiras/Work/photo_jpg2.jpg[/IMG]

бмп весит 502кила а джпг 47кил
база увеличивается на размер + пара лишних кб

Т.о. я пришол к выводу что бмп с лучае бинарного хранения использовать невыгодно, тогда как бмп выгодно использовать если вставлять изображение в базу полностью...

вопрос еще...
как я понял бинарное хранние и просмотр основанно на принципе выгрузке бин содержимого в темп папочку, создлание темп файла, загон вала в имадж контрол, удаление темп файла?

Возникает вопрос если уменя в базе рисунков тыща и я хочу их просмотреть, они будут создаваться/удалятся, не засорит ли это таблицу данных и не нарушит ли фрагментацию диска? Актуально для меня особенно для медленных машин под нт-ёй

ЗЫ: наматерился всласть пока прокукал как все работает

  Ответить  
 
 автор: ???   (30.11.-1 в 00:00)
 
 

Re: приступим нет смысла сохранять БМП в базе как бинарник - размер будет только больше (размер исходного файла больше) - суть сохранения графического файла как BLOB - сокращение размера базы

я сохраняю в бинарник любые типы файлов - хоть тот-же MDE-ник Аксесс (одна база и в ней хранятся пять разных клиентов - рабочие места) хоть DOC хоть EXE - все работает пучком.

например я в служебной таблице базы храню бинарник вьюера XnView.EXE - сохраняю его на диск и обращаюсь к нему из командной строки (Shell) если нужно работать с файлами изображений - образмерить, конвертировать и проч.


то что у тебя в БМП-шнике гамма ползет - это видимо ошибка - м.б. соотношение сторон или масштаб, у меня такого небыло - уточни ты файл как бинарник сохраняешь (BLOB) или как OLE.

попробуй так как сделано в http://msa.polarcom.ru/st/d_1000347.htm

тысяча рисунков это конечно дофига, но у меня, например более 3000 фоток как BLOB в МЕМО поле и ничего, правда тормозит изрядно и на медленных машинах не работает - вырубает Access (например пентиум ММХ 64 ОЗУ :))) )

насчет фрагментации диска не скажу - не проверял :( даже в голову не пришло проверить.

как вариант можно использовать смешанную тактику - хранить файлы изображений в БД а показывать их все с диска - на старте базы (или временами) сливать все фотки чохом из базы в файлы на диске - так сказать переиндексировать массив фотографий (Rebuild archive), чтобы не мучаться по одной и поддержать актуальность...

  Ответить  
 
 автор: Romiras   (30.11.-1 в 00:00)
 
 

судя по всем как БЛОБ сохраняю intNumFile = FreeFile
strType = FileUtils_GetFileType(strWork)


Open strWork For Binary Access Read As #intNumFile
ReDim bytB(FileLen(strWork))
Get #intNumFile, , bytB
Close #intNumFile

strWork = "photo." & strType

With rst
.FindFirst strFind
If .NoMatch = False Then Exit Sub
.AddNew
!PersCode = strPersCode
!PersPhoto.Value = bytB
!PhotoLink = strWork
.Update
End With

вроде условия сохранения и показа джпг одинаковые...надо будет подумать, значить таки трабла у меян одного

а на счет хранения хнвью и его испольования это хитрый ход попробую запомнить)))

ЗЫ: спасибо за ответ

  Ответить  
 
 автор: ?????? ??????????????   (30.11.-1 в 00:00)
 
 

FileUtils_GetFileType это ты так просто расширение из имени файла берешь или как-то по хитрому тип файла вычисляешь?

может быть здесь собака зарыта - он тебе просто глубину цвета преобразует 24-bit в 16-color например

  Ответить  
 
 автор: Romiras   (30.11.-1 в 00:00)
 
 

Re: FileUtils_GetFileType Function FileUtils_GetFileType(strPath As String) As String
Dim fs

Set fs = CreateObject("Scripting.FileSystemObject")
FileUtils_GetFileType = fs.GetExtensionName(strPath)

End Function

надо будет попробыват без этого

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList