LINUX.ORG.RU

Открыть файл с фотографией и записать данные в массив

 


0

1

Изучаю этот замечательный язык программирования. Есть проблемы в понимании чтения данных из файла. Если кто-то очень хорошо знает этот язык, и может подсказать как без стороних библиотек и минимальным количеством строк можно конвертировать фото из файла в массив то внемлим с великим трепетом. Проверять на ошибку открытия файла не нужно. Чем проще и меньше написано тем лучше. Потому что синтаксис языка еще вызывает у меня затруднения

Ответ на: комментарий от TheAnonymous

он имеет ввиду сохранить картинку в массиве байтов как blob в базе данных. Ничего необычного, старо как мир

anonymous
()
Ответ на: комментарий от TheAnonymous
char* readBlobFile(char* filename) {
    FILE* f = fopen(filename, "rb");
    fseek(f, 0, SEEK_END);
    long len = ftell(f);
    rewind(f);
    char* buf = (char*)malloc(len);
    fread(buf, len, 1, f);
    fclose(f);
    return buf;
}

Ну просто чтение файла без проверок типа такого

TheAnonymous ★★★★★
()
Ответ на: комментарий от TheAnonymous

Чё?

Есть фото. Надо его представить в виде многомерного массива. Ну представить не совсем правильно сказано. Скорее преобразовать в массив.

Stierlitz_
() автор топика
Ответ на: комментарий от TheAnonymous

Я правильно понимаю что все читается из файла рассматривается как массив типа char? Не важно фото это или просто текст. Все что из файла то массив char?

Stierlitz_
() автор топика
Ответ на: комментарий от anonymous

Наверное не важно. Буду любое фото конвертировать в тот формат перед перед записью в массив с каким форматом удобнее и проще работать. Ну и чтобы было не сзато

Stierlitz_
() автор топика

как без стороних библиотек

Без сторонних библиотек придётся учить много матчасти и велосипедить много кода

Harald ★★★★★
()

надо ещё уточнить, в какой формат пикселя и цветовое пространство, RGB или YUV

Harald ★★★★★
()

Изучи TGA формат и используй его. Должно быть для простоты без RLE сжатия. В первых байтах файла находится информация о ширине и высоте картинки (а также информация о глубине и прочее), а далее просто идёт массив пикселей.

Всё что тебе нужно узнать это где в TGA формате хранится информация о картинке.

anonymous
()
Ответ на: комментарий от Harald

Пускай начинает либо с FreeImage, либо с lodepng, либо с NetPBM. А ужо потом крашит всё побайтно (ежели конечно захочет).

anonymous
()
Ответ на: комментарий от Harald

Лучше TGA глубиной в 8 бит в 4 канала без RLE сжатия. Именно из си самое удобное. Зная заранее глубину и сколько каналов, нужно просто прочитать щирину и высоту, а дальше тупо считать пиксели в массив. На чистом си две функции чтения и записи картинки уместятся в 20 строк. Ну или в 40 если вообще всё по правилам делать. Ну или в 100 если всё отформатировать кросиво ::)

anonymous
()
Ответ на: комментарий от Harald

Нет просто идёт массив пикселей для 8 бит на канал RGBA картинки тоесть в 4 канала идёт последовательно | r g b a | r g b a | r g b a и так до конца файла. Для rgb например тупо r g b | r g b и так далее. Тоесть если картинка 800x600 то считав первые 8004 байта (после метаданных 21 байт вроде «ой забыл!») ты получишь верхнюю строку картинки, а считав (8004)(600/2) ты получишь ровно половину картинки. Очень удобно. Если тебе надо например от картинки сверху вниз строку то читаешь в цикле (8004) * i и всё. Очень удобно. По сути заголовок с описанием в несколько байт а дальше тупо массив последовательный без оверинжиниринга, красота.

anonymous
()
Ответ на: комментарий от anonymous

Блин символ * пропал и я запятые забыл. Ну думаю понятно про что я. Хотя кому надо википедию глянут и за вечер или час в зависимости от скила реализуют.

Только лично я не понял про RLE крита например делает его по одному а гимп по другому как декодировать хз ваще. И да ещё юмор если из криты экспортнуть в tga то GIMP не откроет ЛОЛ , а если через свою реализацию тоже самое сделать то всё работает. Эти поделия толь стандарты не соблюдают толь я не знаю чего. Ладно там жпег с ошибками и своими накрутками экспортируют, а тут то… Эх.

anonymous
()
Ответ на: комментарий от Stierlitz_

Я правильно понимаю что все читается из файла рассматривается как массив типа char?

Неправильно. Рассматривается как тебе удобно. Удобно как массив байт - читай как байты в char. Удобно как что-то другое - читай как другое, только не забудь обработать случай, когда длина файла не кратна длине этого другого.

anonymous
()

Советую тебе воспользоваться замечательной header-only библиотекой STB. Сам ею пользуюсь.

Без сторонних библиотек ты это никак не сделаешь. Посмотри хотя бы реализацию Jpeg2000 (особенно в плане AVX и т.п. оптимизаций).

синтаксис языка еще вызывает у меня затруднения

Тогда выучи сначала простые хэллоуворлды. А то в двух указателях запутаешься!

Eddy_Em ☆☆☆☆☆
()
15 июля 2021 г.

Участвовал много раз. Выиграла заявка с фото через замочную скважину (на фоне ватмана, никакущее качество, похож на индуса). Из редактирования - изменение размера и обрезка в gimp, удаление метаданных (до того всегда их оставлял). Есть подобные истории от людей на фоне холодильников.

В интернетах есть подробная статья как работает механизм отсева. В первую очередь бракуются заявки с намёками на редактирование (аномалии, указывающие на ретуширование). Потом выбираются победившие кейсы и фотки первичных заявителей проверяются на похожесть со всеми прочими заявками (всего что-то около 5 этапов проверок). При обнаружении дублей заявка аннулируется. В каких-то случаях вместо предварительного отсеивания дело доходит до интервью, где после потраченных $530+ (за 1 человека), сообщается, что на твоё имя обнаружен дубль и (на усмотрение посла) ты (не)получаешь визу.

В общем, бери смартфон (мегапикселей 5 должно быть). Вставай днём напротив окна (чтобы равномерный свет падал на тебя, но без отдельных лучей и теней). Позади тебя должен быть беловатый фон (светлая стена с отделкой «под яйцо», простыня). Расстояние от стены до твоей спины хотя бы метр, чтобы на фото не было теней позади. Камера на уровне глаз зафиксирована в паре метров от тебя (без зума). Делаешь много фоток. Потом выбираешь нормальные, вырезаешь в необходимых пропорциях в gimp, скейлишь до 600x600. Сейчас последнее стало необязательным и подойдут любые квадратные с разрешением не более 1200x1200. Но если камера гавно, качественнее будет, если таки сделаешь.

Всё. Отправляешь заявку. Шанс выиграть 1-2% если один, 2-4% если женат, 4+% если женат и есть дети в возрасте 18-21 с образованием/опытом. После победы есть небольшая вероятность, что тебе не хватит виз (потому что победителей выбирается с запасом). Можешь не пройти по медицине если есть в заразной форме туберкулёз, сифилис, гепатит, спид (об этом не спрашивают, но один сообщил врачу, тот сделал пометочку, и от посла получился отказ). В случае ошибки в начальной форме (возраст, номер паспорта, имя, фото) - сразу отказ без разговоров. И всё. Если после всего этого у посла не будет чесаться пятка, ему дала жена, ты не химик-физик-безопасник или административная проверка прошла достаточно быстро и дала добро, тебе дадут визу, по которой можно въехать в страну и в течение полгода получить ВНЖ (ака гринку).

anonymous
()
Ответ на: комментарий от Stierlitz_

Ну так то по любому придётся где-то брать её фото. Была история успеха про то, как жена отказывалась участвовать, тогда муж своё взял нормальное, а в качестве фото жены использовал отфотошопленное групповое фото в лесу. После победы жена передумала на счёт своей нелюбви к США. Но на собеседовании им отказали (автоматически проверяются только фото первичных заявителей, а жёны-дети просто прикладываются к делу; поэтому заявка прошла, а визы не дали).

*** Повышение шанса происходит не просто потому что ты женат (как в иммиграционной программе Канады, где баллы супругов плюсуются), а потому что каждый из участников может самостоятельно отправлять от своего имени заявку (муж - отдельно, жена - отдельно), если хотят (шансы увеличиваются только если они хотят). При этом, понятное дело, в случае победы визы получает вся семья.

anonymous
()
Ответ на: комментарий от anonymous

Справедливо. Благодарен вам за то что нашли ремя и написали. Любая ина что поможет понять как правильно подать документы сейчас ценна для меня

Stierlitz_
() автор топика
Ответ на: комментарий от Stierlitz_

Там в треде эксперды-теоретики, конечно, сидят знатные. Всё хрень: и про отбор исключительно кандидатов наук, и про влияние на шансы выигрыша кол-ва «чиновников», и про необходимость 30-50 тысяч долларов на первое время. Какие только БИЧи ВНЖ не получали: обычные таксисты, нищюки в возрасте, продавцы с рынка. Напротив, отдельные специальности требуют административной проверки, которая если затянется, можно остаться без визы. Квоты по странам тоже распределяются исходя из кол-ва участников лотереи в этих странах так, чтобы шанс был одинаковый. Есть верхний потолок (4500 виз или 7%), дающий выходцам маленьких стран и стран, где виза непопулярна, преимущество (участвовать можно от своей страны рождения или страны рождения супруга/супруги). Но к указанному там 35-миллионному Узбекистану это точно не относится (с кол-вом «чиновников» это тоже не связано).

По поводу западных кисельных берегов, где не натравливают собак на протестующих, мирно сидящих на газоне (Нидерланды), не поливают протестующих холодной водой в январе, чтобы спасти от короновируса (Германия), не лишают при использовании гидрантов глаз (Германия 2010), не сажают за посты в социальных сетях (Австралия), не угрожают сроком учёному, требуя расшифровать запись космического шума (Британия), не сажают в тюрьму за отказ оплачивать налог на телевизор (Германия), не влияют на цензурную политику социальных сетей (США), «чиновники» (unelected officials) работают исключительно в интересах телезрителей (ЛОЛ) и уходят, если перестают устраивать общество… Это, наверное, взгляд из 90х, когда ещё не зашкварно было в качестве реплики использовать «а вот в Германии…», «а в Канаде…» и даже не выглядить при этом идиотом. «Канада - адекватная версия США» - тоже мог придумать (на самом деле повторить) только придурок. При их «политкорректности», поражающей даже британцев, «прогрессивной» (на самом деле регрессивной) повестке в школах (о расизме математики и угнетателях-белых теперь с 9 класса), «женщинах» с членами в женских раздевалках (хочешь же, чтобы твоя дочь переодевалась вместе со взрослым мужиком, ощутившим себя женщиной), мужиками в женском спорте (как и в США), а сейчас при рассмотрении возможности наказания мыслепреступления (я скажу, что ты замыслил против меня «hate crime» и ещё до всякого решения суда к тебе будет применён «restraining order»)… Очень адекватная версия, надо сказать.

Если задача стоит уехать, из опыта своего окружения, проще всего сделать это через образование. Имея степень бакалавра, 3 отзыва от профессоров, резюме, сносные оценки и какую-то сумму денег, можно податься почти в любую страну Европы. Из расходов - виза, перелёт, проживание на первое время, (возможно) символическая плата за магистратуру, по 50 евро за каждое заявление в университет, около 200$ за тест по английскому. Знаю даже самых конченых даунов, которые так уехали в Германию, Норвегию, Францию (там нужен французский), Эстонию. Сразу же устроились по профессии на частичную занятость. А по окончании магистратуры перешли на полную ставку и наоставались. Хрен бы они со своим бэкграундом уехали по рабочей визе (это уже из личного опыта). В Канаду сложнее: образование дорогое для иностранцев, а к требованию баллов express entry они подошли как настоящие бюрократы (знакомый пыхер с 12-летним опытом на одном рабочем месте, где он последние 11 лет просто числился и получал зряплату, с такой же женой – идеальные кандидаты, пусть и неконкурентноспособны на рынке труда).

anonymous
()

Libpng, если храните фотографии в png, без библиотек прийдётся туго.

jhonathan
()
Ответ на: комментарий от anonymous

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

Уважаемый, она не только будет переодеваться но и спать с мужчинами. И может быть не с одним. Это будет ее выбор. Я она мне дочь а не жена. Я лишь могу дать осторожный совет но не больше. Мужчины которые почувствовали себя женщинами не страшны, но страшны не мужчины которые хотят чувствовать себя ими. Да ты и я можем переживать за безопастность своих детей но об их безопастности надо было думать до того как ты решил родить. Согласись что это ответственый шаг. И прежде чем рожать детей надо подумать а что их тут ждет? Или не надо думать? Или сначала родить а потом переживать с кем же она будет мыться в душе. Ну это как переехать с семьей в район из убийц и гопников и начать после переживать за их безопастность. Может не надо было их везти в тот район? Этот мир такой. И зло здесь было и будет! Понимаешь! Зло будет всегда. Были и будут войны. И даже без войн люди невечны настанет день когда кто-то уйдет. И винить в этом мужчин которые почувствовали себя женщинами очень глупо. Опасны не они а вы. Все вы кто решил что их дети и они сами центр вселенной. И все что представляет угрозу для их счастья должно быть уничтожено. А счастье их заключается в каждодневном набивании брюха и воспроизводстве нового потомства которое подлежит обереганию. И не видите вы ни причин ни связи но зато имеете поддержку такой же обезумевшей массы зовущих себя настоящими родителями готовых рвать и лить кровь за своих деток не понимая что самое ужастное уже с ними случилось в тот момент когда они родились и случилось это благодаря вам. Беседа окончена.

Stierlitz_
() автор топика
Ответ на: комментарий от Stierlitz_

Вот это тебя распидорасило. Шестилетнюю дочь в одну раздевалку с 40-летним мужиком отправил переодеваться, чтобы «не представлять угрозу чьему-то счастью». А те, кто не отправил - «обезумевшая масса». Во истину, глубокая мысль. Ты карго-культист? Раз что-то происходит - значит всё так и должно быть, надо привыкать (запрыгивать в вагон, состава отправляющегося в светлое будущее). Что же ты с такой философией из России рвёшься уехать. Оставайся.

anonymous
()
Ответ на: комментарий от anonymous

Что же ты с такой философией из России рвёшься уехать

Не пали контору. У него задание.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Вот это тебя распидорасило

Судя по словам уж лучше с ним чем с тобой. И я тебе уже написал что самое плохое что могло произойти с вашеми детьми уже произошло: вы затянули их в этот мир. Так что переодется с мужиком в раздевалке это еще цвоточки. Читал как настройке двое ублюдков изнасиловали девушку и скинули ее вниз. Это были не взрослые мужики, это были 17 и 15 лет. Прикинь они могут в этом возрасте заниматься сексом и убивать. Вижу тебе хочется поговорить но не с кем. Я тебе могу еще раз повторить что единственный опасный человек для твоей дочки это ты сам. Ты обрек ее в лучшем случае на 12 часовой рабочий день в магните где она как робот не сможет отойти от кассы даже чтобы подмыться. У моего кота больше свободного времени чем у девушки за кассой и он тратит его на шлифование своих яиц, но ты не понимаешь этого и пытаешься что-то оспорить со мной. Что ты хочешь оспорить? Может ты лучше оставь силы на зятя который по-пьяни будет долбить твою девочку по голове, а она будет бояться рассказать тебе потому что тогда он настучит и тебе если ты вдруг придешь. Это будет не 40 летний мужик в раздевалки это будет твой зять. Я тебя прошу побереги свой пороховой запас. Не трать на меня. Ты потом поймешь если не понял сейчас. Удачи тебе отец 6 летней девочки.

Stierlitz_
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.