Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > не работает fixpng для сгенеренной картинки


Автор: Dave 17.3.2009, 17:27
Приветствую !
генерю png картинку средствами пхп с прозрачностью, сохраняю как png файл.
так как ИЕ 6 не умеет отображать png то пробую решить проблему с помощью fixpng (http://www.tigir.com/alpha_png.htm)
но для этой картинки фикс не работает почему то. Если же я png делаю в фотошопе то для нее фикс пашет, а для сгенеренной картинки - нет. Возможно дело в том что сгенеренный через php png файл является png8, а тот что сделал в фотошопе- png24. Хочу попробовать создать Png24 в пхп , но как ? 
ф-ю пока не нашел...


Автор: NNaarreekk 17.3.2009, 19:59
Dave, а этот сгенерированный ПНГ в остальных браузерах нормально показывается?

Автор: nerezus 18.3.2009, 01:35
Расширение скрипта .png то?

fixpng работает через данный селектор: input[@src$=.png]

Автор: Dave 18.3.2009, 10:03
Цитата

Dave, а этот сгенерированный ПНГ в остальных браузерах нормально показывается? 

Да

Цитата

Расширение скрипта .png то?

Да
Цитата

fixpng работает через данный селектор: input[@src$=.png] 

поподробнее можно  ? 

я уже применял fixpng но там png файлы были создани в фотошопе и они png24 , все прекрасно работает. 

Автор: ksnk 18.3.2009, 10:47
Dave, Вообще-то IE6 умеет отображать png. Правда он считает, что они примерно то-же, что и GIF, и игнорирует альфа-канал. В png-8 никакого альфа-канала нету, так что никаких проблем с картинкой быть не должно и так. 
Чего не так показывается? образец картинки есть? Может прозрачность задана как-то кривовато...

Автор: Dave 19.3.2009, 17:10
может что то не так делаю, 
пример сгенеренной картинки
http://piccy.info/
пхп код
Код

<?php 


$image = "bioshock.jpg";
$corner = 40; 

file_exists($image) or die("No such file: ".$image); //check if image exists before processing 

$dim = getimagesize($image); 
//dump($dim);
//create from type handle 
if($dim[2] == 2) $new = imagecreatefromjpeg($image); 
elseif($dim[2] == 1) $new = imagecreatefromgif($image); 
elseif($dim[2] == 3) $new = imagecreatefrompng($image); 
else die("Unsupported format: ".$dim[2]); 
//dump($dim);
//find colorcode 
$palette = imagecreatetruecolor($dim[0], $dim[1]); 
$found = false; 
while($found == false) { 
    
    $r = rand(0, 255); 
    $g = rand(0, 255); 
    $b = rand(0, 255); 
    
    if(imagecolorexact($new, $r, $g, $b) != (-1)) { 
        
        $colorcode = imagecolorallocate($palette, $r, $g, $b); 
        $found = true; 
            
    } 
    
} 


imagearc($new, $dim[0]-$corner, $corner-1, $corner*2, $corner*2, 270, 0, $colorcode); 
imagefilltoborder($new, $dim[0], 0, $colorcode, $colorcode); 
imagecolortransparent($new, $colorcode); //make corners transparent 

imagepng($new,'upload/test.png');
imagedestroy($new); 

?>


Автор: ksnk 23.3.2009, 01:00
Судя по информации о картинке - это png-24. C ним вполне прилично справляется fixpng.
Код

<!--[if lt IE 7]>
<![if gte IE 5.5]>
<script type="text/javascript" src="js/fixpng.js"></script>
<style type="text/css">
.iePNG { filter:expression(fixPNG(this)); }
</style>
<![endif]>
<![endif]-->
<img class="iePNG" src="ddbf0861c326a8d3b85f76830c44.png">


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)