Anonymous | Login | Signup for a new account | 21-11-24 13:35 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0001627 | SAS.Планета | [All Projects] Баг | public | 12-10-2012 05:17 | 05-05-2014 06:54 | ||||
Reporter | olegpv | ||||||||
Assigned To | zed | ||||||||
Priority | normal | Severity | major | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | 120808 | ||||||||
Target Version | 140505 | Fixed in Version | 140505 | ||||||
Summary | 0001627: Добавить режим получения типа тайла по содержимому игнорируя информацию от сервера | ||||||||
Description | Не открываются тайлы PNG, если Content-Type image/jpeg В ТопоКарте (Маршруты.ру) часть тайлов не загружается. Для них пишет error [53] non a jpeg file. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | GTIMAGE.PAS [^] (22,673 bytes) 05-04-2014 18:31 | ||||||||
Notes | |
(0009537) Garl (manager) 14-10-2012 17:24 |
в этих случаях ресурс возвращает png под видом image\jpeg |
(0009538) Garl (manager) 14-10-2012 17:27 |
как вариант конечно можно прикрутить, но Планета не поддерживает 32 битные PNG |
(0009540) zed (manager) 14-10-2012 19:43 |
>но Планета не поддерживает 32 битные PNG Как это не поддерживает. Должны читаться. |
(0009552) Garl (manager) 15-10-2012 16:45 |
читаются, но отображаются не корректно (см вложение png_jpg.jpg) вот но тайл http://maps.marshruty.ru/ml.ashx?al=1&i=1&x=1244&y=734&z=11 по всем признакам там jpeg, но содержимое там PNG32 bit |
(0009553) olegpv (reporter) 15-10-2012 17:28 |
жалко. самые лучшие топокарты оттуда. главное на разных уровнях разный масштаб. а может можно по содержанию определять формат как в браузерах. |
(0009556) zed (manager) 16-10-2012 04:41 |
>по всем признакам там jpeg, но содержимое там PNG32 bit Ну так и решать нужно эту проблему, либо искать как её обойти. Оно и ежу понятно, что если на вход jpeg-декомпрессору подсунуть png файл, будет ошибка (о чём и сообщается в тикете). Каждый тип растра нужно обрабатывать именно тем декомпрессором, который под это заточен. >в этих случаях ресурс возвращает png под видом image\jpeg т.е. там в заголовках возвращается неверный content-type? |
(0009558) Garl (manager) 16-10-2012 04:44 |
>>в этих случаях ресурс возвращает png под видом image\jpeg > т.е. там в заголовках возвращается неверный content-type? именно |
(0009559) zed (manager) 16-10-2012 05:00 |
1. Кривой ресурс, и при возможности желательно сообщить об этом лаге их админу 2. В САСе, сразу после загрузки тайла, можно сделать проверку content-type по содержимому (в WinApi по-моему даже есть какая-то функция для этого). Соответственно, и в zmp нужно будет добавить тип image/png, чтобы вызывался правильный декомпрессор. |
(0009560) Garl (manager) 16-10-2012 05:01 edited on: 16-10-2012 05:01 |
ИМХО это сделато именно с целью борьбы с САС-Планетой :) |
(0009563) zed (manager) 16-10-2012 05:14 |
"На каждую хитрую гайку, всегда найдётся болт с левой резьбой" (c) |
(0009564) vdemidov (manager) 16-10-2012 07:04 |
Для таких хитрых болтов, в САС.Планете уже годы как есть режим игнорирования отдаваемых сервером content-type |
(0009570) Garl (manager) 16-10-2012 09:31 |
тут фишка в чём, в 99.9% отдаётся jpeg, а в 0.01% PNG32 под видом jpeg и при defaultContentType=image/jpeg - пропускает ПНГ, иначе не ловит Джипеги |
(0009598) zed (manager) 18-10-2012 17:37 |
Т.е. в параметрах карты нужно либо прописать: ContentType=image/jpeg, image/png либо включить игнорирование контента: IgnoreContentType=1 В обоих случаях, в кэш тайлы сохранятся в jpeg формате (те что прилетят в png будут автоматически сконвертированы в jpeg принудительно). |
(0009600) olegpv (reporter) 19-10-2012 06:24 |
не так не, так не работает ContentType=image/jpeg, image/png там так и есть |
(0009699) Tolik (manager) 23-10-2012 05:00 edited on: 23-10-2012 10:25 |
Проблема в том, что SAS не пытается открыть этот PNG файл с расширением jpg, выдаёт ошибку "This is not JPEG file, starts with 0x89 0x50". Надо исправить в коде, чтобы вместо этой ошибки запускался декодер PNG (ибо 0x89 0x50 - это и есть начало %PNG). Пример неправильного контент тайпа здесь: 56°01'24.77" 37°00'00.43", зум 12, а также крестом во все стороны от этого тайла. Сам тайл открывается сасом без проблем. Просьба к Администратору перенести этот тикет в проект SAS. |
(0009711) Tolik (manager) 23-10-2012 09:55 edited on: 23-10-2012 10:11 |
Если в params.txt сделать IgnoreContentType=1 DefaultContentType=image/png то скачиваются именно плохие тайлы и сохраняются в формате jpg (что позволяет докачать дыры. Хорошие jpg при этом почему-то не скачиваются.) Но если вернуть IgnoreContentType=0, то они затираются файлами в формате png (с расширением jpg), которые не отображаются на карте. |
(0014110) olegpv (reporter) 05-04-2014 06:31 |
сделал такой скрипт на пхп. он преобразовывает файлы png в jpg а jpg не изменяет можно его либо на локальном сервере выкладывать либо на хостинге и в настройках карты его url писать <?php $x=$_GET['x']; $y=$_GET['y']; $z=$_GET['z']; $url='http://maps.marshruty.ru/ml.ashx?al=1&i=1&x='.$x.'&y='.$y.'&z='.$z.'&i=1&ss=7f0924'; // создание нового cURL ресурса $ch = curl_init(); // установка URL и других необходимых параметров curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $data = curl_exec($ch); curl_close($ch); $info = getimagesizefromstring ($data); if ($info !== false) { $width = $info[0]; $height = $info[1]; //if ($this->w < $minWidth || $this->h < $minHeight) return false; $image_type = $info[2]; header('Content-Type: image/jpeg'); if($image_type==IMAGETYPE_JPEG){ echo $data; }else{ $img=imagecreatefromstring($data); //$c = imagecolorallocate($img, 255, 255, 255); //$c = imagecolorallocate($img, 0,0,0); // Make the background transparent //imagecolortransparent($img, $c); $output = imagecreatetruecolor($width, $height); $white = imagecolorallocate($output, 255, 255, 255); imagefilledrectangle($output, 0, 0, $width, $height, $white); imagecopy($output, $img, 0, 0, 0, 0, $width, $height); imagejpeg($output,null,100); } } |
(0014111) vdemidov (manager) 05-04-2014 06:37 |
На самом деле самому перекодировать совсем не обязательно, достаточно отправить правильный нидер и САС сам все перекодирует. Проблема в том, что некоторые сервера нагло врут. |
(0014112) olegpv (reporter) 05-04-2014 06:53 |
но ведь можно определять тип не по content type а по самому содержимому картинки. наверняка и для дельфи есть какая нибудь библиотека. и в пхп и в джаве можно просто открыть картинку и они сами определяют тип. MOBAC с маршрутов скачивает эти картинки нормально и все показывается. |
(0014113) vdemidov (manager) 05-04-2014 15:39 |
Конечно можно, и даже нужно. В этом и состоит суть этой хотелки. Просто нужно найти или написать библиотеку для определения типа по содержимому и решить куда это вставить. |
(0014114) Garl (manager) 05-04-2014 18:30 |
вспомнил где видел определялку ) в NDN была одно время как плагин. немного гугля, и вот оно: http://philip.helger.com/gt/download.php#gtw |
(0014115) olegpv (reporter) 05-04-2014 18:45 |
вот еще простая http://delphihaven.wordpress.com/2011/01/22/tip-detecting-graphic-formats/ можно вставить там где определяется по content type. браузер тоже по содержимому определяет и показывает их. |
(0014116) zed (manager) 06-04-2014 04:48 edited on: 06-04-2014 04:49 |
FindMimeFromData: contains hard-coded tests for (currently 26) separate MIME types (see Known MIME Types). This means that if a given buffer contains data in the format of one of these MIME types, a test exists in FindMimeFromData that is designed (by scanning through the buffer contents) to recognize the corresponding MIME type. Функция живёт в urlmon.pas. |
(0014118) zed (manager) 07-04-2014 12:54 |
Сделал. В zmp появился новый параметр: DetectContentType=1, при включении которого, после загрузки тайла будет выполнятся анализ его содержимого и коррекция поля Content-Type (при необходимости и при условии, что таки удалось определить тип). Для определения типа используется функция FindMimeFromData и поддерживается ограниченное число форматов, но jpeg/gif/png/bmp там есть, так что её возможностей для нас должно быть достаточно. |
(0014119) vdemidov (manager) 07-04-2014 13:26 |
Для случая тайлохранилища на БерклиДб, СУБД и тп. можно было не конвертировать тайл, а сохранять как есть, если он того же класса так сказать. Тоесть, если ждем битмапку, а пришла kml это, конечно, ошибка. А если пришла любая битмпака, то можно сохранять и так. |
(0014120) zed (manager) 07-04-2014 13:45 |
Это вообще отдельный разговор. Тут мы просто исправляем хидеры ответа сервера, чтобы они соответствовали содержимому и всё было без обмана. |
(0014121) vdemidov (manager) 07-04-2014 14:08 |
Да знаю. Просто к слову пришлось. Это нужно отельную хотелку заводить. |
(0014140) Tolik (manager) 14-04-2014 11:39 edited on: 14-04-2014 11:42 |
Что-то не работает. Говорит, unexpected content type image/x-png или image/pjpeg 140407.8030 А что, ночнушка не скомпилировалась до сих пор? plus.maps\_Genshtab\topo_marshruty.zmp\ [PARAMS] pnum=199 GUID={025de135-53fd-45db-b90e-fafbb7fb3bf4} name=рНОНйЮПРЮ (лЮПЬПСРШ.ПС) name_en=TopoMap (marshruty.ru) name_uk=TopoMap (marshruty.ru) NameInCache=topo_marshruty DefURLBase=http://maps.marshruty.ru/ml.ashx?al=1&i=1&x= DetectContentType=1 ParentSubMenu=цЕМЬРЮА ParentSubMenu_en=Genshtab ParentSubMenu_uk=Genshtab Ext=.jpg projection=1 sradiusa=6378137 sradiusb=6378137 UseDwn=1 RequestHead=Referer: http://maps.marshruty.ru/ |
(0014141) zed (manager) 14-04-2014 11:43 |
В приведенной цитате ContentType не прописан же. ContentType=image/png,image/x-png,image/jpeg,image/pjpeg Странно, что ругается на x-png и pjpeg, какая версия IE и что за винда? |
(0014143) zed (manager) 14-04-2014 11:47 |
> 140407.8030 > А что, ночнушка не скомпилировалась до сих пор? В этой версии уже всё должно работать. Изменения были в 8029 коммите. |
(0014144) Tolik (manager) 14-04-2014 11:48 edited on: 14-04-2014 11:54 |
А, я думал, что ContentType можно не писать, чтобы брал любой. Теперь работает, только старые серые квадраты надо стирать вручную. Винда 7 SP1, а IE 8. P.S. Закинул zmp в репо. |
(0014145) zed (manager) 14-04-2014 11:50 |
Не, ContentType писать нужно всегда. |
Users who viewed this issue | |
User List | Anonymous (6443x), zed (1x) |
Total Views | 6444 |
Last View | 21-11-2024 13:35 |
Issue History | |||
Date Modified | Username | Field | Change |
12-10-2012 05:17 | olegpv | New Issue | |
12-10-2012 05:17 | olegpv | File Added: mar.png | |
14-10-2012 17:24 | Garl | Note Added: 0009537 | |
14-10-2012 17:27 | Garl | Note Added: 0009538 | |
14-10-2012 17:35 | Garl | File Added: png_jpg.jpg | |
14-10-2012 19:43 | zed | Note Added: 0009540 | |
15-10-2012 16:45 | Garl | Note Added: 0009552 | |
15-10-2012 17:28 | olegpv | Note Added: 0009553 | |
16-10-2012 04:41 | zed | Note Added: 0009556 | |
16-10-2012 04:44 | Garl | Note Added: 0009558 | |
16-10-2012 05:00 | zed | Note Added: 0009559 | |
16-10-2012 05:01 | Garl | Note Added: 0009560 | |
16-10-2012 05:01 | Garl | Note Edited: 0009560 | View Revisions |
16-10-2012 05:14 | zed | Note Added: 0009563 | |
16-10-2012 07:04 | vdemidov | Note Added: 0009564 | |
16-10-2012 09:31 | Garl | Note Added: 0009570 | |
18-10-2012 17:37 | zed | Note Added: 0009598 | |
19-10-2012 06:24 | olegpv | Note Added: 0009600 | |
23-10-2012 05:00 | Tolik | Note Added: 0009699 | |
23-10-2012 05:00 | Tolik | Status | new => acknowledged |
23-10-2012 05:01 | Tolik | Note Edited: 0009699 | View Revisions |
23-10-2012 05:03 | Tolik | Summary | в топокарте маршруты ру часть тайлов не загружается => Не открываются тайлы PNG, если Content-Type image/jpeg |
23-10-2012 05:03 | Tolik | Description Updated | View Revisions |
23-10-2012 05:08 | Tolik | Note Edited: 0009699 | View Revisions |
23-10-2012 09:55 | Tolik | Note Added: 0009711 | |
23-10-2012 09:57 | Tolik | Note Edited: 0009699 | View Revisions |
23-10-2012 10:08 | Tolik | Note Edited: 0009699 | View Revisions |
23-10-2012 10:11 | Tolik | Note Edited: 0009711 | View Revisions |
23-10-2012 10:11 | Tolik | Note Edited: 0009711 | View Revisions |
23-10-2012 10:25 | Tolik | Note Edited: 0009699 | View Revisions |
19-05-2013 12:02 | zed | Project | Доработка карты (ZMP) => SAS.Планета |
28-05-2013 12:41 | vdemidov | Status | acknowledged => confirmed |
28-05-2013 12:41 | vdemidov | Product Version | => 120808 |
28-05-2013 12:41 | vdemidov | Target Version | => 50xxxx |
28-05-2013 12:41 | vdemidov | Summary | Не открываются тайлы PNG, если Content-Type image/jpeg => Добавить режим получения типа тайла по содержимому игнорируя информацию от сервера |
28-05-2013 12:41 | vdemidov | Description Updated | View Revisions |
19-03-2014 12:59 | vdemidov | Relationship added | has duplicate 0002383 |
05-04-2014 06:31 | olegpv | Note Added: 0014110 | |
05-04-2014 06:37 | vdemidov | Note Added: 0014111 | |
05-04-2014 06:53 | olegpv | Note Added: 0014112 | |
05-04-2014 15:39 | vdemidov | Note Added: 0014113 | |
05-04-2014 18:30 | Garl | Note Added: 0014114 | |
05-04-2014 18:31 | Garl | File Added: GTIMAGE.PAS | |
05-04-2014 18:45 | olegpv | Note Added: 0014115 | |
06-04-2014 04:48 | zed | Note Added: 0014116 | |
06-04-2014 04:49 | zed | Note Edited: 0014116 | View Revisions |
07-04-2014 12:54 | zed | Note Added: 0014118 | |
07-04-2014 13:06 | zed | Status | confirmed => resolved |
07-04-2014 13:06 | zed | Fixed in Version | => 141111 |
07-04-2014 13:06 | zed | Resolution | open => fixed |
07-04-2014 13:06 | zed | Assigned To | => zed |
07-04-2014 13:07 | zed | Target Version | 50xxxx => 141111 |
07-04-2014 13:07 | zed | File Deleted: mar.png | |
07-04-2014 13:07 | zed | File Deleted: png_jpg.jpg | |
07-04-2014 13:26 | vdemidov | Note Added: 0014119 | |
07-04-2014 13:45 | zed | Note Added: 0014120 | |
07-04-2014 14:08 | vdemidov | Note Added: 0014121 | |
14-04-2014 11:39 | Tolik | Note Added: 0014140 | |
14-04-2014 11:41 | Tolik | Note Edited: 0014140 | View Revisions |
14-04-2014 11:42 | Tolik | Note Edited: 0014140 | View Revisions |
14-04-2014 11:43 | zed | Note Added: 0014141 | |
14-04-2014 11:47 | zed | Note Added: 0014143 | |
14-04-2014 11:48 | Tolik | Note Added: 0014144 | |
14-04-2014 11:50 | zed | Note Added: 0014145 | |
14-04-2014 11:54 | Tolik | Note Edited: 0014144 | View Revisions |
05-05-2014 06:54 | vdemidov | Target Version | 141111 => 140505 |
05-05-2014 06:54 | vdemidov | Fixed in Version | 141111 => 140505 |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |