Vecka 06, Torsdag 9 Februari 2012 Prenumerera

Arkiv för kategori ‘Små skript’

ImageMagick utan exec()

onsdag, 19 januari, 2011

ImageMagick används för att hantera bilder med t.ex. PHP och ofta med funktionen exec(). Många webbhotell blockerar exec() av säkerhetsskäl men med lite tur finns ändå ImageMagick installerat.

Under arbete åt en kund som använder Webbkonsulterna upptäckte jag att de har ImageMagick som kan användas genom PHPs klass istället för med exec(). Ett exempel på vad man kan göra, en tumnageln av en PDF-fil:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * Jag skapar inställningarna i variabler för att lättare kunna 
 * ändra och ev fixa till en funktion
 */
$input_file = '/path/to/inputfile.pdf[0]'; // Sökväg till filen, [0] anger pdffilens sidnummer
$output_file = '/path/to/outputfile.jpg'; // Sökväg till tumnageln, här har jag valt en .jpg
$thumbnail_width = 400; // Ställ in maxbredd
$thumbnail_height = 0; // Maxhöjd, 0 betyder att den ska gå efter bredd
$jpeg_quality = 80; // jpeg kvalitet
 
$im = new imagick($input_file);  // Skapa objektet med filen
$im->setImageColorspace(255); // Färginställning
$im->setCompression(Imagick::COMPRESSION_JPEG); // Använd jpg-kompression
$im->setCompressionQuality($jpeg_quality); // Kvalitet på jpeg
$im->setImageFormat('jpeg'); // Format på filen
$im->thumbnailImage($thumbnail_width, $thumbnail_height); // Skapa tumnagel med bredd/höjd
$im->writeImage($output_file); // Spara filen
$im->clear();
$im->destroy();

Kombinerat med lite filuppladdning, felhantering, jQuery reflect m.m. blir det här en mycket trevlig PDF-funktion.

Jag vet inte ens om detta hade varit möjligt att göra med det bibliotek som vanligen är inbyggt, GD2.

Lista filer i en mapp med PHP

torsdag, 13 augusti, 2009

Jag har återvänt till operativsystemet Ubuntu Linux med testserver på en laptop och ville ha en förstasida som enkelt listar filer i en mapp, men där jag också kan lägga till annat efter hand. Så jag satte ihop ett litet skript som listar mappar och filer. Inget märkvärdigt alls, men varför inte dela med sig även av det enkla? ;)

För att få rätt sökväg så använder jag funktionen getcwd(), och sedan PHPs filfunktioner för att lista namnen. I skriptet sparar jag en array med mapparna och en array med filerna, som jag sedan loopar ut som HTML-lista. Det är dels för att få en enkel sortering, men också för att separera funktion och form. Det här går att göra mycket mer avancerat, med för mitt ändamål duger det för tillfället perfekt.

I filen finns PHP-skriptet samt CSS-filen. Jag har även använt ikoner från silkicons, men de får du ladda ner själv.

Ladda hem skriptet för att lista filer i en mapp

Som sagt så går det bygga ut detta simpla skript på många sätt, om du kollar filsystems-funktionerna i PHP-manualen får du säkert idéer till att göra mer än att lista filer i en mapp.

Jag passade förresten på att testa lite annorlunda färgschema i gEdit… rätt trevligt faktiskt.

gEdits Cobalt-tema

gEdits Cobalt-tema

Plocka bort och lägg till variabler som skickas i URL

torsdag, 7 maj, 2009

Snubblade på två bra funktioner som enkelt låter dig lägga till och ta bort variabler från en URL (dvs en s.k. querystring). Själv använder jag den när en sida ska laddas om men med lite annan data.

Funktionen på Added Bytes har skapats med reguljära uttryck (en. regular expressions) och PHP-funktionen preg_replace. Med reguljära uttryck kan man matcha en textsträng, även om den förändras, och arbeta med delar av den.

querystring-regexp-addedbytes

Läs även andra bloggares åsikter om regexp, url, snippets, kodtips, php

Enkel slumpning av array

tisdag, 13 januari, 2009

Om du ska slumpa fram innehåll i en array så kan det här vara ett bra litet skript. Jag har bland annat använt det för att välja en vinnare i Xodas bildutmaning.

<?php
// Jag skapar en array med de värden vi vill använda
$input = array("Malin", "Magnus", "Terje", "TomasJ1", "TomasJ2", "Stefan", "Johnny", "Calandrella");
 
// Jag slumpar sedan fram numret på ett av värden i arrayen
// med PHPs inbyggda funktion array_rand()
$rand_key = array_rand($input);
 
// Jag skriver ut det slumpade värdet i arrayen. Jag känner inte till
// värdet utan får använda varibeln från rad 7.
echo $input[$rand_key];
 
// Svårare än så behöver det inte vara, men det beror lite på vad du 
// vill slumpa fram. För lösenord och liknande berhöver man göra 
// mer avancerade saker.
?>