Программно ужать *.png

ilyab88

Есть веб-страница (не моя)
http://bus.cpark.ru/BusMap.ashx
, на которой отображается сгенерированный *.png файл с текущим положением автобусов. Этот файл весит 313 Кб.
Я хочу сделать веб-страничку, которая отображала бы эту картинку в уменьшенном виде в пиксельных размерах, пониже качеством и весила бы 30 Кб.
Т.е., обработка *.png делается на сервере, а клиенту выдается уменьшенная картинка.
Эту картинку можно было бы удобно смотреть с мобильного телефона.
Вопрос, как это лучше сделать.

erotic

Сервер на линухах? Есть же программные пакеты, которые это умеют. По-моему imagemagick может, еще какие-то. Качай раз в минуту картинку, ужимай и отдавай клиенту статикой.
UPD. Хотя вопрос наверное прикол. PNG же без потери качества жмет. Либо цветов надо меньше делать, либо размер уменьшать, либо формат другой выбирать.
UPD2. Анне. Есть что-то и про PNG. Из документации к convert из imagemagick (http://www.imagemagick.org/script/command-line-options.php?ImageMagick=6adtbgnv423rg3ta7fpavkq2q1#quality):
-quality value
JPEG/MIFF/PNG compression level.
For the MNG and PNG image formats, the quality value sets the zlib compression level (quality / 10) and filter-type (quality % 10). The default PNG "quality" is 75, which means compression level 7 with adaptive PNG filtering, unless the image has a color map, in which case it means compression level 7 with no PNG filtering.
For compression level 0, the Huffman-only strategy is used, which is fastest but not necessarily the worst compression.
If filter-type is 4 or less, the specified PNG filter-type is used for all scanlines:
0: none
1: sub
2: up
3: average
4: Paeth
If filter-type is 5, adaptive filtering is used when quality is greater than 50 and the image does not have a color map, otherwise no filtering is used.
If filter-type is 6, adaptive filtering with minimum-sum-of-absolute-values is used.

apl13

КВАЛИТИ PNG, ПРИПАРКИ МЕРТВЫМ И ДРУГИЕ ЦЕННЫЕ И ПОЛЕЗНЫЕ ТОВАРЫ

apl13

Ну то есть цифра десятков ни на что не влияет, тащемта, имхо.

vall

там как-бы можно организовать потери и сжать сильнее хотя менее качественно

karkar

Есть подозрение, что топикстартеру сгодится и сжатие в JPG.

uncle17



<?php
$filedata = file_get_contents('http://bus.cpark.ru/BusMap.ashx');
header('Content-type: image/png');
echo resizeImg($filedata, 280, 280);

function resizeImg( $filedata, $max_width, $max_height )
{
$src = imagecreatefromstring($filedata);
$type[0] = imagesx($src);
$type[1] = imagesy($src);
if( $type[0] > $max_width or $type[1] > $max_height )
{
// Размеры исходного изображения
$width = $type[0];
$height = $type[1];

if($width > $max_width )
{
$new_width = $max_width;
$height = $new_height = ceil($new_width/$width*$height);
$width = $new_width;
}
if( $height > $max_height )
{
$new_height = $max_height;
$new_width = ceil($new_height/$height*$width);
}
$dst = ImageCreateTrueColor($new_width, $new_height);
$white = imagecolorallocate($dst, 255, 255, 255);
imagefill($dst,0,0,$white);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $new_width,$new_height,$type[0],$type[1]);

imagetruecolortopalette($dst, true, 127);

// Занесение в переменную картинки
ob_start ;
imagepng( $dst ) ;
$img = ob_get_contents ;
ob_end_clean ;
return $img;
ImageDestroy($dst);
}
else
return $filedata;
ImageDestroy($src);
}
?>

Barbie29

попробуй в lzw формате ужать, он самый легкий. я както имаджмаджиком жал во все доступные фоматы тестувую какуюто картинку, получалось что самый легкий это *.lzw

elenangel

ага, следующая тема "Как заставить мобильный браузер отображать *.lzw картинки?"

Barbie29

:grin:

Anna74

если perl c gd стоит, можно им
смотри тут темку поблизости "создание/соединение gif-картинок"

stm7884696

А нет желания карту один раз подгрузить, а автобусики расставлять по ней уже через CSS ? И тогда при обновлении трафик станет еще гораздо меньше. + через ajax можно будет делать и рисовать еще пройденный маршрут и подкрашивать его как на яндекс картах.
Дельное предложение и для увеличения юзабилити и для облегчения трафика и вообще.

VitMix

http://.cre8.ru/bus.php
 
<?
$img = imagecreatefromstring (file_get_contents ('http://bus.cpark.ru/BusMap.ashx';

$newimg = imagecreatetruecolor (280, 280);
imagecopyresampled ($newimg, $img, 0, 0, 0, 0, 280, 280, 560, 560);

header ("Content-type: image/jpeg");
imagejpeg ($newimg);
?>

stm7884696

ну гавеное же качество получается.
Для мобильных клиентов вообще не надо картинок генерить - дайте быстрое API с координатами в формате json для разработчиков и приложение для отслеживания автобусов они сделают сами.
С блекджеком и шлюхами :)
Оставить комментарий
Имя или ник:
Комментарий: