FOK!forum / Digital Corner / plaatje met pallet én alpha laag?
sewesodonderdag 9 oktober 2003 @ 15:47
Is het mogelijk om een plaatje te maken met pallet én alpha-laag welke tevens bruikbaar is in php?

Als ik in photoshop (5.0) kies voor de geindexeerde kleuren (image>mode>indexed color) dan vervalt bij het opslaan als png de optie om de alpha-laag mee op te slaan.

Ik wil eigenlijk alleen de grijswaarden van het plaatje opslaan in een pallet zodat ik dit pallet snel kan aanpassen in php. Daarna wil ik dit plaatje rekeninghoudend met de alpha-laag toevoegen aan een ander plaatje.

Heb trouwens al grayscale modus geprobeert maar toen ging php flippen.

Eigenlijk wil ik dit systeem:

combineren met deze:

sewesodonderdag 9 oktober 2003 @ 16:34
testalpha.php (direct van php.net gepakt )
php:
<?
$photoImage 
ImageCreateFromJPEG($url); 
ImageAlphaBlending($photoImagetrue); 

$logoImage ImageCreateFromPNG($logo); 

$logoImage ImageSelectiveColor($logoImage0,128,255);


$logoW ImageSX($logoImage); 
$logoH ImageSY($logoImage); 

ImageCopy($photoImage$logoImage0000$logoW$logoH); 

ImageJPEG($photoImage); // output to browser

ImageDestroy($photoImage); 
ImageDestroy($logoImage); 
?>

image_jpeg.php (zelfgemaakt )
php:
<?
header
("Expires: ".gmdate("D, d M Y H:i:s"time() + mktime(0,0,0,1,0,0))." GMT");

/***************************************************************************
* ImageCreateFromFile
***************************************************************************/
function imagecreatefromfile($filename)
{
    
$image_info getimagesize ($filename);
    switch (
$image_info[2]) {
        case 
2//IMAGETYPE_JPEG:
        
return imagecreatefromjpeg($filename);
        case 
3//IMAGETYPE_PNG:
            
return imagecreatefrompng($filename);
        case 
1//IMAGETYPE_GIF:     
            
return imagecreatefromgif($filename);
    };
    exit(
"Error unknown type:".$image_info['mime']."(".$image_info[2].")");
};

    if (
$img == '')
    {
        
$img 'seweso-systems';
    };

    if (
substr($img07) != "http://")
    {
        
$img 'images/'.$img.'.png';
    };

    
$image imagecreatefromfile($img);

    if (!
$image)  /* See if it failed */
    
{
        echo 
"error opening file...";
           };


    if (!isset(
$color))
    {
        
$src_width imagesx($image);
        
$src_height imagesy($image);
        echo 
"<PRE>";
        for (
$iY 0$iY $src_height$iY++)
        {
            for (
$iX 0$iX $src_width$iX++)
            {
                
$color ImageColorAt($image$iX$iY);
                
$rgb imagecolorsforindex ($image$color);
                
$color str_pad(dechex($rgb['red']),2,"0"STR_PAD_LEFT).str_pad(dechex($rgb['green']),2,"0"STR_PAD_LEFT).str_pad(dechex($rgb['blue']),2,"0"STR_PAD_LEFT);
                
//echo "#$color";
                
echo "<img src=image_jpeg.php?color=000000".$color."FFFFFF&img=".$img2.">";
            };
            echo 
"<BR/>";
        };
        echo 
"</PRE>";
        exit();
    };
    
    
//*
    
$from_r hexdec(substr($color02));
    
$from_g hexdec(substr($color22));
    
$from_b hexdec(substr($color42));
    
    
$midl_r hexdec(substr($color62));
    
$midl_g hexdec(substr($color82));
    
$midl_b hexdec(substr($color102));
    
    
$last_r hexdec(substr($color122));
    
$last_g hexdec(substr($color142));
    
$last_b hexdec(substr($color162));
    
//*/    

    
for ($i 0$i<=255$i++)
    {
        
// 0 = from, 128 = midl, 255 = last
        
$new_r $i 128 ? (-$i 128) / 128 $from_r $i 128 $midl_r : ($i 128) / 128 $last_r + (-$i 255) / 128 $midl_r;
        
$new_g $i 128 ? (-$i 128) / 128 $from_g $i 128 $midl_g : ($i 128) / 128 $last_g + (-$i 255) / 128 $midl_g;
        
$new_b $i 128 ? (-$i 128) / 128 $from_b $i 128 $midl_b : ($i 128) / 128 $last_b + (-$i 255) / 128 $midl_b;
        
imagecolorset ($image$i$new_r$new_g$new_b);
    };

    
imagejpeg($imagenull99); 
    exit();
?>

dus .... bovenstaand wil ik samenvoegen .... iemand een idee?
sewesovrijdag 10 oktober 2003 @ 21:11
Stel ik de vraag misschien verkeerd? Dit word namelijk wel een beetje zielig.... Heb ik de vraag verkeerd gesteld? Vertel het me aub

Of doe maar een slotje, dan probeer ik het wel op te lossen met een omweg....

sewesozaterdag 11 oktober 2003 @ 14:45
Ik kom hier voortaan gewoon elke dag mijn vraag bekijken...eens kijken hoeveel ik hier in mijn eentje kan posten voor hij op slot gaat.
sly2001zaterdag 11 oktober 2003 @ 14:55
-edit-

[Dit bericht is gewijzigd door Slarioux op 11-10-2003 14:56]

Sanderzaterdag 11 oktober 2003 @ 14:57
Tja, als niemand het weet kan ook niemand je helpen. Maar weet je zeker dat je een slotje wilt?
sly2001zaterdag 11 oktober 2003 @ 15:06
Ik geef hem alleen maar een tip!! en dan word ie verwijderd.. belachelijk...

Hier is het antwoord;

Niet doen.
waarom jezelf vermoeien als er zoveel leukere dingen te doen zijn.

sewesozondag 12 oktober 2003 @ 18:30
quote:
Op zaterdag 11 oktober 2003 15:06 schreef sly2001 het volgende:
Ik geef hem alleen maar een tip!! en dan word ie verwijderd.. belachelijk...

Hier is het antwoord;

Niet doen.
waarom jezelf vermoeien als er zoveel leukere dingen te doen zijn.


Ach ja iedereen vindt andere dingen leuk, ik hou van proberen de grenzen van een programmeertaal te vinden.

En laat dat slotje nog maar ff zitten, misschien dat er binnen een jaar iemand hier een antwoord op weet

sopzondag 12 oktober 2003 @ 18:42
het kan aan mij liggen hè, maar als je die functie nou genest maakt.
Dus je doet in de ene PHP de alpha laag en in een andere PHP de pallet.
Of kun je als src image alleen met extentie JPG/GIF werken? en niet PHP?

-edit- dus bijvoorbeeld in Image_Jpeg.php gebruik je als $filename gewoon 'testalpha.php?blablabla'

Werkt dat niet?

sewesozondag 12 oktober 2003 @ 22:26
quote:
Op zondag 12 oktober 2003 18:42 schreef sop het volgende:
het kan aan mij liggen hè, maar als je die functie nou genest maakt.
Dus je doet in de ene PHP de alpha laag en in een andere PHP de pallet.
Of kun je als src image alleen met extentie JPG/GIF werken? en niet PHP?

-edit- dus bijvoorbeeld in Image_Jpeg.php gebruik je als $filename gewoon 'testalpha.php?blablabla'

Werkt dat niet?


Ja zoiets is wel mogelijk.

Maar het probleem zit hem tevens in het feit dat png niet én een alpha-laag én een pallet aankan, en juist de ene php heeft een alpha-laag nodig en de andere een pallet.

Dus....

sopmaandag 13 oktober 2003 @ 08:56
Ehm, als je dat weet, waarom wil je het dan toch?!
sewesomaandag 13 oktober 2003 @ 11:47
quote:
Op maandag 13 oktober 2003 08:56 schreef sop het volgende:
Ehm, als je dat weet, waarom wil je het dan toch?!
Ik weet het niet 100% zeker omdat ik alleen nog maar png-plaatjes met photoshop 5.0 heb gemaakt, dus het zou heel misschien zo kunnen zijn dat het wél mogelijk is maar dan met een ander tekenprogramma...

Een andere optie is om in php de alpha laag op een andere manier aan te leveren...