|
автор: 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
надо будет попробыват без этого | |
|
| |