Страница 2 из 3

Re: Обновление записи в базе данных

Добавлено: 23 июл 2019, 14:47
Kosist
jane_wild писал(а):Теперь вот думаю как делать resize фотографий и примерно подгонять под размер, без использования NI Vision
А зачем изменять размер? Чтобы подогнать под размер Picture контрола? Если да, то вот примеры - https://knowledge.ni.com/KnowledgeArtic ... 0019Ko3SAE

Re: Обновление записи в базе данных

Добавлено: 23 июл 2019, 15:38
Artem.spb
1- сами данные
2-таблица цвета
3-ширина
4-высота
5-глубина
Если в базу загнать весь файл целиком то все данные там уже есть. Другое дело, если нужен какой-то поиск по данным. Например, найти все pict шиhиной >100500
Может, автор базы с этой целью доп столбцы создал.
Если же нужна просто картинка, то "строка" читается из базы, пишется обратно в файл, файл читается как jpg, и на выходе есть все параметры.

Re: Обновление записи в базе данных

Добавлено: 23 июл 2019, 16:18
dadreamer
Artem.spb писал(а):пишется обратно в файл, файл читается как jpg
Можно этой дополнительной операции избежать: http://labviewportal.org/viewtopic.php?p=79173#p79173
Если файл не в JPEG, а в PNG, то даже проще: http://labviewportal.org/viewtopic.php?p=79189#p79189

Re: Обновление записи в базе данных

Добавлено: 23 июл 2019, 22:54
IvanLis
Artem.spb писал(а):Дополнение: с вашей базой фокус не прошёл.
IvanLis подскажет, он знает по свежим следам :)
Сейчас не имею возможности проверить, да и искать с телефона не очень.
Вы должны понять, что БД это не файл, а некоторая сущность - СУБД ну и целый набор файлов (они могут быть неявно, а скрыты).
Для подключения к этой сущности, как и к железке, нужен интерфейс (в строке подключения - Провайдер), который может уже выступает в качестве прослойки между БД и Вашей прогой.
Разработчики СУБД стараются делать интерфейсы для популярных библиотек доступа типа ADO (ее наверное все поддерживают).

Вот Вам нужно выбрать, какого Провайдера использовать, установить интерфейс для СУБД, а уже потом стучаться в БД.

Re: Обновление записи в базе данных

Добавлено: 24 июл 2019, 05:54
jane_wild
А зачем изменять размер?
Зачем хранить картинку размером в пару мегабайт, ведь если количество строк будет большим, то размер БД будет огромный. В связи с этим вопрос - будет ли работать в исполняемом файле (*.exe) этот VI? Нашла вот здесь
В общем цель выбрать jpg файл, уменьшить его до 200 x 200 пикселей (мне больше не нужно) и загнать его, как говорил Артем в одно поле базы данных. Что бы потом можно было эту картинку оттуда достать и отобразить на picture control.

Re: Обновление записи в базе данных

Добавлено: 24 июл 2019, 11:09
dadreamer
jane_wild писал(а):В связи с этим вопрос - будет ли работать в исполняемом файле (*.exe) этот VI? Нашла вот здесь
В общем цель выбрать jpg файл, уменьшить его до 200 x 200 пикселей (мне больше не нужно) и загнать его, как говорил Артем в одно поле базы данных. Что бы потом можно было эту картинку оттуда достать и отобразить на picture control.
В exe должно работать, просто ваше приложение начнёт зависеть от .NET Framework, если до этого не зависело. Ну, и далее по тексту, необходимо вставить Dispose + Close Ref везде, где нужно. Ниже чел попытался это сделать, но пропустил кое какие ссылки, а про Close вообще забыл. :) Кроме того, поток конвертируется в PNG, что может привести к излишнему выделению памяти (и привело, ниже по тексту). Лучше переделать поток на JPG и вместо PNG Data to LV Image VI вставить тот :vi: , о котором я писал выше.

Re: Обновление записи в базе данных

Добавлено: 24 июл 2019, 12:47
Artem.spb
В общем цель выбрать jpg файл, уменьшить его до 200 x 200 пикселей
Как говорится, дёшево и сердито :D
zoom.png
Без всяких .NEt и Vision

Re: Обновление записи в базе данных

Добавлено: 24 июл 2019, 15:48
dadreamer
Рамка идёт бонусом :) И ещё ей придётся следить, чтобы изображения были квадратные, иначе вот так получится:

Re: Обновление записи в базе данных

Добавлено: 24 июл 2019, 16:05
Artem.spb
Рамка идёт бонусом :) И ещё ей придётся следить, чтобы изображения были квадратные
Это я оставил бонусом для саморазвития.
Когда мне надо было на экране ужимать, я изображение дополнительно в центр смещал, чтобы красиво смотрелось.

Re: Обновление записи в базе данных

Добавлено: 24 июл 2019, 20:01
dadreamer
До кучи, способ ресайза через WinAPI: https://stackoverflow.com/questions/428 ... stretchblt
За основу можно взять этот :vi: (85% там уже готово): http://labviewportal.org/viewtopic.php?p=64756#p64756 Заменить функцию BitBlt на StretchBlt, возможно создать ещё один доп. контекст (dc), загрузить в него bitmap - в принципе, это всё.

Re: Обновление записи в базе данных

Добавлено: 25 июл 2019, 21:45
jane_wild
Извиняюсь за молчание - была в отъезде. Возращаясь к вопросу о resize
Artem.spb писал(а):
В общем цель выбрать jpg файл, уменьшить его до 200 x 200 пикселей
Как говорится, дёшево и сердито :D
zoom.png
Без всяких .NEt и Vision
Именно так я сейчас и сделала, но хотелось бы качества.. Там ведь копируестя весь контрол включая label (если она видна).
dadreamer писал(а):До кучи, способ ресайза через WinAPI: https://stackoverflow.com/questions/428 ... stretchblt
За основу можно взять этот :vi: (85% там уже готово): http://labviewportal.org/viewtopic.php?p=64756#p64756 Заменить функцию BitBlt на StretchBlt, возможно создать ещё один доп. контекст (dc), загрузить в него bitmap - в принципе, это всё.
Честно пыталась - ничего не получаестя. Как по прототипу указать правильные параметры, а потом их еще и правильно подсоединить... мои робкие попытки убеждить руководство о покупки NI Vision успехом не увенчались :(
Загнать картинку в одно поле также не получаестя. Какой тип данных я должна присвоить полю в MS Access, при создании таблицы, где планируестся хранить картинку? OLE Object? Attachment? String? Memo? Вообщем вопросов много - ответов мало, но как говориться "дорогу осилит идущий"
В любом случае ребята спасибо за помощь.

Re: Обновление записи в базе данных

Добавлено: 26 июл 2019, 13:48
IvanLis
jane_wild писал(а):Загнать картинку в одно поле также не получаестя. Какой тип данных я должна присвоить полю в MS Access, при создании таблицы, где планируестся хранить картинку? OLE Object? Attachment? String? Memo?
В Long String не войдет, там ограничение 64000, а у Вас получается 200*200*4=160000 byte.
Берите BLOB поле, это универсальный стандарт загнать в него можно пару Gbyte, к тому же он универсален и поддерживается большинством СУБД. Работать с ним нужно как с набором byte, т.е. фактически это как бинарный файл внутри БД.

Re: Обновление записи в базе данных

Добавлено: 26 июл 2019, 14:11
jane_wild
IvanLis, Спасибо за информацию. Я тут подумала может пока не поздно стоит отказаться от MS Access в пользу других БД. Кто что посоветует? Требований два: Наличие бесплатного инструмента для просмотра/редактирования БД, возможность работы с БД при помощи NI Database Toolkit. Спасибо

Re: Обновление записи в базе данных

Добавлено: 26 июл 2019, 14:26
Borjomy_1
jane_wild, вы тут на холивар нас подписываете? )))
Мое первое предложение - MySQL. В принципе, даже есть библиотека (открытая, с исходниками) для работы с ней напрямую. Но и через NI Database Toolkit, при наличии установленных драйверов, работает. Только ставить надо драйвера той разрядности, какая Labview.

Re: Обновление записи в базе данных

Добавлено: 26 июл 2019, 15:57
IvanLis
jane_wild писал(а):Я тут подумала может пока не поздно стоит отказаться от MS Access в пользу других БД. Кто что посоветует? Требований два: Наличие бесплатного инструмента для просмотра/редактирования БД, возможность работы с БД при помощи NI Database Toolkit. Спасибо
А с каких это пор MS Access бесплатной стала?
Данную СУБД в некоторых случаях удобно использовать, в плане переносимости - одним файлом, но по хорошему, для просмотра необходим MS Office.

БД необходимо выбирать исходя из поставленных целей, т.к. например некоторые при установке тянут много пакетов, но достаточно функциональны (MySQL, PostgreSQL).
А вот SQLite не требует установки, хранится все в одном файле, но малый набор типов данных полей (в принципе легко обходится), проблемы с блокировками при многопользовательском доступе по причине некоторой пароноидальности по поводу целостности данных и при хранении больших объемов тормознутость.