Posted on 17th February 2009 by admin in Computers | Web Development
class, ico, image, PHP, png, rgb
A few posts ago I wrote about using a PHP class to convert an ICO image to a PNG (or GIF or JPG). I just discovered a bug in the class.
I ran into a problem where some red and orange ICO images turned blue during the conversion. Reading this forum post made me realize that the red and blue values were switched somewhere in class.ico.php. With some experimentation I found it:
In class.ico.php, lines 264-267 need to be changed from
$c[$i] = $this->AllocateColor($im, $this->formats[$index]['colors'][$i]['red'],
$this->formats[$index]['colors'][$i]['green'],
$this->formats[$index]['colors'][$i]['blue'],
round($this->formats[$index]['colors'][$i]['reserved'] / 255 * 127));
to
$c[$i] = $this->AllocateColor($im, $this->formats[$index]['colors'][$i]['blue'],
$this->formats[$index]['colors'][$i]['green'],
$this->formats[$index]['colors'][$i]['red'],
round($this->formats[$index]['colors'][$i]['reserved'] / 255 * 127));
(Note that the blue and red values are indeed switched.) After changing this, it works like a charm for me.
Posted on 17th February 2009 by admin in Computers | Web Development
box, facebook, PHP, profile
As mentioned in my previous post, I’ve been finishing up a facebook application, My Sites. Now that it’s done, I thought I’d post a few tips on how to add profile boxes to your facebook application, since I found it maddeningly complicated.
For the non-facebook-savy, a profile box is a small box that applications can add to your profile’s “wall” or “boxes” tabs. They’re meant to provide a quick glimpse of what’s happening with the application.
I’m assuming that you keep a database of Facebook users, and you want to display something about them in the profile box.
The basic code for adding a profile box is below, annotated with copious comments. This is in PHP code, you can do it in other languages, but it’s what I use. Pop this code into a daily cron for example, and you’re good to go.
<?php
// This code connects to the facebook API.
@require_once 'facebook-platform/php/facebook.php';
$appapikey = 'facebook app api key';
$appsecret = 'facebook app api secret';
$facebook = new Facebook($appapikey, $appsecret);
// This code connects to your own database.
$BASEURL = "http://example.com/path/to/facebook/app";
$connection = @mysql_connect("server","username","password");
if(!$connection)die("Can't connect to the database at this time.");
$res = @mysql_select_db("database");
if(!$res)die("Site database doesn't seem to exist.");
// This code cycles through each user in the database
$sql="SELECT * FROM users";
$data=@mysql_query($sql);
while($user=mysql_fetch_assoc($data)) {
// You can, of course, query your database to build these strings
$WideBox = "Whatever you want a profile box on the 'boxes' tab to say.";
$MobileBox = "Whatever you want a profile box accessed by a mobile device to say.";
$NarrowBox = "Whatever you want a profile box on the 'wall' tab to say.";
// This is the API call, it sets the user's profile box content:
$facebook->api_client->profile_setFBML(
NULL, // This is the markup, set to NULL for 'FBML'
$user['id'], // ID number of the user whose profile box you want to set
$WideBox, // Wide box content for 'boxes' tab
NULL, // Deprecated, should always be NULL
$MobileBox, // Box content for mobile devices
$NarrowBox // Narrow box content for 'wall' tab
);
}
// Clean up the connection
@mysql_close($connection);
?>