Скорее всего ваша картинка имеет 4 бита цвета.
Соответственно 128 цветов в палитре и по два пиксела в байте.
Отсюда и двойная разница.
Или еще веселее - она может быть сжата RLE алгоритмом.
Вы может чего недопоняли.
Из чего состоит 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 в обоих местах.