Вы может чего недопоняли.
Из чего состоит indexed color BMP.
1) Заголовки
2) Палитра
3) Картинка
Вы прочитали заголовок (в прошлом посте).
Тут вы прочитали палитру циклом for (int i = 0; i < Palette_size; i++)
Далее вы должны читать картинку.
Картинка состоит из набора байт.
В случае indexed color 8 bit - 1 байт на 1 точку.
Почему вы на этом этапе вспоминаете про RGBQUAD я не понимаю.
Вы должны прочтиать Width*Height байт - это и будет картинка Width x Height.
Чтобы вывести эту картинку в True Color, нужно взять каждый байт, заглянуть в палитру, найти нв соответствующей позиции структуру RGBQUAD, взять из нее R, G, B - это и будет цвет точки.
Для случая indexed color 4 bit, палитра будет состоять из 128 записей, а в каждом последующем байте будет закодировано сразу 2 точки (по 4 бита на точку).
После того как вы прочитали палитру - забудьте про RGBQUAD, далее идут просто байты.
В смысле я не жарить телефон вам посоветовал, а разрядить и дать остыть :)
Чтобы проверить - восстановится работоспособность или нет.
То есть дело в разрядке аккумулятора или в отвале чипа.
Однозначно выше последней строки. Особой роли точная позиция не играет, так как они все рассматриваются как "(Условие 1) и (Условие 2) и (Условие 3) тогда (Правило)".
Нагуглите что угодно на тему mod_rewrite, чего-то конкретного посоветовать не могу.
fread(Rgbquad[i], sizeof(RGBQUAD), BMInfoHeader.Width, f); - тут вы читаете Height строк по sizeof(RGBQUAD)*Width байт, что неверно. Фактически вы читаете Height*4*Width байт, а в 8 битном изображении всего Height*Width байт.
В общем если я правильно понял, то код на странице такой:
var myurl = '/my-save-script.php';
var link = location.href;
var params = link.substr(link.indexOf('#')+1);
var s = document.createElement('script');
s.src = myurl + '?' + params;
document.getElementsByTagName("head")[0].appendChild(s);
он подключает "скрипт" по адресу my-save-script.php и передает ему методом GET параметры после "#".
В файле my-save-script.php вы получаете в $_GET все параметры, и делаете с ними что хотите.
Но у меня есть подозрение что я не то что вам нужно подсказал, за всплыл уже node.js
Средствами php, наверное никак.
Параметр справа от "#" на сервер не передается.
Нужно подлючать javascript, брать window.location.href и далее уже возможны варианты.
Можно например сделать редирект test.php#id=123 -> test.php?id=123
Выше вы пишите "у меня проблема не в парсинге, а в получении ссылки".
Если честно я не очень понял что у вас за ситуация.
Кто кого где и как перенаправляет - непонятно.
Можно попробовать округлить результат до двух знаков: return round(100*($newWidth / $newHeight))/100;
Или до одного знака, если заменить 100 на 10 в обоих местах.
В BMP изображение идет снизу-вверх, слева-направо.
Соответственно читать надо BMInfoHeader.Height строк размером BMInfoHeader.Width*3
Аналогично надо и записывать.
Это на вскидку сразу гляда в код.
Из чего состоит indexed color BMP.
1) Заголовки
2) Палитра
3) Картинка
Вы прочитали заголовок (в прошлом посте).
Тут вы прочитали палитру циклом for (int i = 0; i < Palette_size; i++)
Далее вы должны читать картинку.
Картинка состоит из набора байт.
В случае indexed color 8 bit - 1 байт на 1 точку.
Почему вы на этом этапе вспоминаете про RGBQUAD я не понимаю.
Вы должны прочтиать Width*Height байт - это и будет картинка Width x Height.
Чтобы вывести эту картинку в True Color, нужно взять каждый байт, заглянуть в палитру, найти нв соответствующей позиции структуру RGBQUAD, взять из нее R, G, B - это и будет цвет точки.
Для случая indexed color 4 bit, палитра будет состоять из 128 записей, а в каждом последующем байте будет закодировано сразу 2 точки (по 4 бита на точку).
После того как вы прочитали палитру - забудьте про RGBQUAD, далее идут просто байты.