Monthly Archive for juny, 2006

Una primera inmersió en el nou Vista

L'altre dia vaig veure la noticia que microsoft posava a disposició del públic una versió beta del nou Windows Vista. Jo que estic molt satisfet del meu MAC em vaig dir, a veure què tal serà aquest nou windows. La veritat és que havia sentit moltes coses sobre el nou vista i volia tenir una idea de com era així que me'l vaig descarregar.

He de reconeixer que les linies són molt fines i li han donat un toc futurista, però trobo que visualment és una mica basto quant a botons i caldran bastants recursos per fer-lo anar. Amb el PIV 2,5Ghz 1GB de RAM anava força bé, però trobo que és una mica complicat d'entrada i s'ha de tenir present que no hi he instal·lat res, anar pelat.

Microsoft està paranoica perduda amb la seguretat i penso que per un usuari planer pot ser tot un maldecap. Igual que va passar amb el service pack 2, van voler fer-ho tant segur que ho van complicar. Han posat un filtre anti-phishing que no et permet navegar, com sempre passarà que la gent treurà els filtres i les històries i el sistema serà un forat, malgrat tot he de dir que tot són impressions d'entrada. Segurament es pot ajustar i precisament per això és una beta, però ho he trobat massa complicat i cal simplificar-ho molt més.

Conclusió, si vols un sistema operatiu com déu mana, simple i que simplement funcioni: MAC

El dinamisme web portat a l'extrem

Actualment estic treballant en una web on s'han de publicar fotos. Però això implica posar una foto petita de previsualització i una de mida més gran per ampliar.

Com us podeu imaginar cialis online pharmacy això alenteix molt l'inserció de continguts. Doncs bé he trobat unes funcions que permeten manipular imatges. Aquestes funcions formen part de les llibrerires GD i permeten redimensionar, superposar imatges, rotar-les, etc.

Posaré un petit exemple de la potència d'aquestes funcions amb una funció que he trobat i permet inserir una imatge sobre una altre. La imatge de sobre queda transparent i li pots marcar la intensitat de manera que sigui com una marca d'aiga.

//Funció que sobreposa $src en la posició $dstx, $dsty amb una intensitat $pct de $dst
function imagecopyburn($dst,$src,$dstx,$dsty,$pct)
{

$w = imagesx($src);
$h = imagesy($src);
$i = 0; $j = 0; $k = 0; $rgb = 0;
$d = array(); $s = array();

for ($i=0; $i<$h; $i++) {

for ($j=0; $j<$w; $j++) {
$rgb=imagecolorat($dst,$dstx+$j,$dsty+$i);
$d[] = ($rgb >> 16) & 0xFF;
$d[] = ($rgb >> 8 ) & 0xFF;
$d[] = $rgb & 0xFF;

$rgb = imagecolorat($src,$j,$i);
$s[] = ($rgb >> 16) & 0xFF;
$s[] = ($rgb >> 8 ) & 0xFF;
$s[] = $rgb & 0xFF;

$d[] -= max($d[]-$s[],0)*$pct/100;
$d[] -= max($d[]-$s[],0)*$pct/100;
$d[] -= max($d[]-$s[],0)*$pct/100;

imagesetpixel(
$dst, $dstx+$j, $dsty+$i,
imagecolorallocate($dst,$d[],$d[],$d[])
);

}

}
return $dst;

}

//Funció que retorna una imatge que conté un text d'error
function error(){

/* See if it failed */
$im = imagecreatetruecolor(150, 40); /* Create a black image */
$bgc = imagecolorallocate($im, 255, 255, 255);
$tc = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 150, 40, $bgc);
/* Output an errmsg */
imagestring($im, 2, 5, 5, “El fitxer no existeix”, $tc);
return $im;

}
//Funció que carrega un fitxer jpg
function LoadJpeg($imgname)
{

$im = @imagecreatefromjpeg($imgname); /* Attempt to open */
if (!$im) { /* See if it failed */
$im=error();
}
return $im;

}
//Enviem la capçalera de la imatge
header('Content-type: image/jpeg');
//Carreguem les imatges destí($dst) i orgiren($src)
$dst=LoadJpeg($imgname1);
$src=LoadJpeg($imgname2);
//Posem $src sobre $dst en l'extrem superior esquerra amb una intensitat del 75%
$im=imagecopyburn($dst,$src,0,0,75);
//Finalment enviem la imatge al navegador
imagejpeg($im, null, 100);
?>