Image Processing - Neareast Neighbor Interpolation

بزرگنمایی تصاویر به روش درون یابی Neareast Neighbor

این روش تاثیری بر رنگ اولیه تصاویر نمیگذارد، و رنگ های پیکسل مجاور را تکثیر میکند، بزرگنمایی در این تصاویر باعث شطرنجی شدن آن میشود

Normal Image: 256 * 256 Pixel

Zoom 2X: 512 * 512 Pixel

Zoom 4X: 1024 * 1024 Pixel

سورس کد

<?php
    $zoom
=$_GET["zoom"];
    
    
$img=imagecreatefrompng("3.png");
    
    
$width imagesx($img);
    
$height imagesy($img);
    
    
$width2 $width $zoom;
    
$height2 $height $zoom;
    
    
$img2=imagecreate($width2,$height2);
    
imagecolorallocate($img2,0,0,255);
    for(
$i=0;$i<$width$i++)
    {
        for(
$j=0;$j<$height$j++)
        {
            
            
$colorimagecolorat($img$i$j);
            
$color_arr=imagecolorsforindex($img$color);
            
            
            for(
$m=0;$m<$zoom$m++)
            {
                for(
$n=0;$n<$zoom$n++)
                {
                    
set_color($img2$i*$zoom+$m$j*$zoom+$n$color_arr);
                }
            }
            
    
                    
            
//imagecopyresized($img2,$img, $i*$zoom, $j*$zoom, $i, $j, $zoom, $zoom, 1, 1);
        
}
        
    }
    
    
header("Content-type: image/png");
    
imagepng($img2);
    
imagedestroy($img2);
    
imagedestroy($img);
    
    function 
set_color($img2$i,$j$color_arr)
    {
        
            
        
$color2 imagecolorexact($img2,  $color_arr["red"],$color_arr["green"],$color_arr["blue"]);
            
        if(
$color2==-1
        {
            if(
imagecolorstotal($img2)>=255) {
                
$color2 imagecolorclosest($img2$color_arr["red"],$color_arr["green"],$color_arr["blue"]);
            } 
            else 
            {
                
$color2 imagecolorallocate($img2$color_arr["red"],$color_arr["green"],$color_arr["blue"]);
            }
            
        }
        
        
imagesetpixel($img2,$i,$j,$color2);
        
        
    }
1