Arkiv för ‘Webbdesign’ Kategorin

Gör GDI+ till ett minne blott – använd WPF!

lördag, mars 3rd, 2012

I var och vart annat projekt man sitter i (i alla fall när det gäller e-handel eller integration) så skall det skalas bilder. De skall ha bestämda storlekar, bestämda bredder, de ska beskäras och ramas in.

GDI+ ligger under System.Drawing vilket har en liten drawback, ända upp till senaste versionen av .NET (4.5) så skriver Micosoft så här på MSDN:
Classes within the System.Drawing namespace are not supported for use within a Windows or ASP.NET service. Attempting to use these classes from within one of these application types may produce unexpected problems, such as diminished service performance and run-time exceptions. For a supported alternative, see Windows Imaging Components.
GDI+ ligger säkerligen på många av våra webbar och i många av våra Windows-tjänster och fungerar riktigt bra, men varför chansa i fortsättningen? Dessutom kan jag tycka att resultatet av det som GDUI+ genererar inte alltid är tillfredsställande ur en kvalité. Men det finns en lösning!

Windows Imaging Components

Det finns två sätt att arbeta med Windows Imaging Components (vidare kallat WIC). Det ena är via Windows Presentation Foundation (vidare kallat WPF) och det andra är via COM. Det senare alternativet kan vara användbart där vi har problem med trust eller vi inte vill programmera i något av de språk som tillhandahålls inom ramen för .NET. Men för den här gången kommer vi fokusera på C#.

Tanken jag har med detta lilla blogginlägg är att ge er alla lite hjälp på vägen, lite kod ni kan kopiera och utgå i från i era egna projekt. Så slipper ni skriva allt från början, vilket gör en övergång ganska mycket smidigare.

Jag har fokuserat på tre olika typer av bildomskalingar.

  • En omskalning där vi håller en av sidorna konstant och låter den andra skala efter behov. Det här är det klassiska sättet att skala om bilder.
  • Där vi använder en fixerad storlek (både höjd och bredd) på resultatet och lägger in vår omskalde bild i denna, så att den får plats.
  • Samt en tredje variant där vi, likt vår förra variant, använder en fixerad storlek på bilden men den här gången så skalar vi ner bilden så att en av sidorna exakt matchar en av resultatet sidor och sedan beskär vi bort överflödet av bilden.

Klassisk omskalning

Den klassisk omskalningen är bara ”vänligt” implemneterad, med det menar jag att den alltid kommer att skala om en bild proportionellt. Den väljer alltid den skalning som blir minst om man anger båda parametrarna, annars kan man skicka in 0 (noll) på en av dem för att vara övertygad om att skalning sker med den aktuella parametern i avseende.

private BitmapFrame ResizeImage(BitmapSource input, int width, int height) {
  double newHeightRatio = (height / (double)input.PixelHeight);
  double newWidthRatio = (width / (double)input.PixelWidth);

  if (newHeightRatio <= 0 && newWidthRatio > 0)
    newHeightRatio = newWidthRatio;
  else if (newWidthRatio <= 0 && newHeightRatio > 0)
    newWidthRatio = newHeightRatio;

  var scale = Math.Min(newWidthRatio, newHeightRatio);
  if (scale > 1)
    scale = 1;
  var target = new TransformedBitmap(input, new ScaleTransform(scale, scale));
  return BitmapFrame.Create(target);
}

WPF innehåller en så kallad BitmapSource som transformerar vår bild, denna tar emot en transformationstyp och .NET tillhandahåller några standardiserade. Dessa är

  • MatrixTransform
  • RotateTransform
  • ScaleTransform
  • SkewTransform
  • TranslateTransform

Just nu kommer jag enbart att fokusera på ScaleTransform eftersom det är den som är mest intressant för mig, men här kan vi lätt modifiera koden ovan för att exempelvis rotera eller skeva en bild istället.

Det här sättet att skala bilder med WPF är det snabbaste och ger en helt godkänd bildkvalité. Vi har inte heller någon möjlighet att direkt påverka bilddjupet, resultatbilden kommer i detta fall att ha samma upplösning (DPI) som orginalet.

Det här är ressultatet av en sådan här omskalning. Jag har talat om att bilden skall vara 200 px hög.

Det inte den här metoden ger möjlighet till är att välja vilken algoritm som skall användas för omskalningen. För att kunna ange detta måste vi använda ett annat sätt när vi skalar om bilderna, och förlorar då effektivitet. Det här är en avvägning man får göra i fall till fall, dock tycker jag att den algoritm som används av exemplet ovan ger en bra bildkvalité till en bra hastighet.

public BitmapFrame Resize(BitmapFrame input, int width, int height, BitmapScalingMode salingMode, int dpi) {
  var group = new DrawingGroup();
  RenderOptions.SetBitmapScalingMode(group, scalingMode);
  group.Children.Add(new ImageDrawing(photo, new Rect(0, 0, width, height)));
  var targetVisual = new DrawingVisual();
  var targetContext = targetVisual.RenderOpen();
  targetContext.DrawDrawing(group);
  var target = new RenderTargetBitmap(width, height, dpi, dpi, PixelFormats.Default);
  targetContext.Close();
  target.Render(targetVisual);
  var targetFrame = BitmapFrame.Create(target);
  return targetFrame;
}

I exemplet ovan kan man se hur vi kan välja både skalningsmetod och djup i bilden som vi producerar. Vi använder en helt annan metodik för att skala bilderna vilken tar mer kraft från systemet.

Skala en bild och placera den i en ram

Om man alltid vill ha en fast storlek på bilderna, tillexempel till en produklista där det skulle se otroligt dumt ut om bilderna var i olika bredder eller höjder, kan man välja att lägga dem i en ”omgivande ram”. Lösningen är vanlig och gör det mycket enklare att designa webbplatser.

public BitmapFrame ResizeAndFit(BitmapSource input, int width, int height) {
  if (input.PixelWidth == width && input.PixelHeight == height)
    return BitmapFrame.Create(input);

  if (input.Format != PixelFormats.Bgra32 || input.Format != PixelFormats.Pbgra32)
  input = new FormatConvertedBitmap(input, PixelFormats.Bgra32, null, 0);

  var scale = Math.Min((double)width / input.PixelWidth, height / (double)input.PixelHeight);
  if (scale > 1)
    scale = 1;

  var x = (int)Math.Round((width - (input.PixelWidth * scale)) / 2);
  var y = (int)Math.Round((height - (input.PixelHeight * scale)) / 2);
  var scaled = new TransformedBitmap(input, new ScaleTransform(scale, scale));
  var stride = scaled.PixelWidth * (scaled.Format.BitsPerPixel / 8);
  var result = new WriteableBitmap(width, height, scaled.DpiX, scaled.DpiY, scaled.Format, null);
  var colorFrame = GetColorBitmap(width, height, Brushes.White);
  var colorFrameStride = colorFrame.PixelWidth * (colorFrame.Format.BitsPerPixel / 8);
  var colorFrameData = new byte[colorFrame.PixelHeight * colorFrameStride];
  var data = new byte[scaled.PixelHeight * stride];

  colorFrame.CopyPixels(colorFrameData, colorFrameStride, 0);
  scaled.CopyPixels(data, stride, 0);

  result.WritePixels(new Int32Rect(0, 0, width, height), colorFrameData, colorFrameStride, 0, 0);
  result.WritePixels(new Int32Rect(0, 0, scaled.PixelWidth, scaled.PixelHeight), data, stride, x, y);

  return BitmapFrame.Create(result);
}

private BitmapSource GetColorBitmap(int width, int height, Brush color) {
  var renderBitmap = new RenderTargetBitmap(size.Width, size.Height, 96, 96, PixelFormats.Pbgra32);
  var drawingVisual = new DrawingVisual();
  using (var context = drawingVisual.RenderOpen()) {
    context.DrawRectangle(color, null, new Rect(0, 0, size.Width, size.Height));
  }
  renderBitmap.Render(drawingVisual);
  return renderBitmap;
}

Den här typen av omskalning blir lite mer avancerad. Här måste vi nämligen rita ut vår omskalde bild i en ytterligare bild. Först så ser vi till att båda våra bildformat är på samma format, om vår inkommande bild inte är 32bitars RGB (Bgra32) så omvandlar vi källan till detta, exempel på andra format kan vara 16bitars RGB eller CMYK.

Efter detta skalar vi ner bilden så att den får plats i vår ram. Det vi gör är att vi räknar ut proportionell skalning i både X- och Y-led för att sedan välja den som är minst. Det kommer vara den skalfaktor vi använder för att se till att bilden får plats i vår destinationsstorlek.

Som standard är vår nya skrivbara bitmap transparent, detta fungerar mycket bra för PNG och kanske till och med är önskvärt. Det vi i så fall gör är att vi raderar våran colorFrame från koden ovan och låter inte denna skrivas till bilden. När vi skalar foton är det i de flesta fall önskvärt att spara bilderna som JPEG eftersom det tar minst plats. JPEG stödjer inte transparens och därför måste vi måla vår bakgrund i en önskad färg.

Vi kopierar sedan över vår bakgrund och därefter vår bild till vår destination och returnerar denna. Omskalningen är klar!

Det här är resultatet. Jag har talat om att jag vill ha en bild som är 500 px bred och 200 px hög, och med blå bakgrund.

Skala en bild och beskär det som inte får plats

Om du vill ha en fast bildstorlek men inte vill ha en ”ful” färgad ram kring din bild så kan det vara nog så bra att beskära bort en del av bilden. Om dina orginalbilder ligger väldigt nära dina omskalade bilder i proportioner så är detta ett utmärkt alternativ, på bilderna som jag använder blir resultatet dessvärre mycket sämre. s

public BitmapFrame ResizeAndCrop(BitmapSource input, int width, int height) {
  if (input.PixelWidth == width && input.PixelHeight == height)
    return BitmapFrame.Create(input);

  var useScaleH = (width / (double)input.PixelWidth) * input.PixelHeight;
  var newSizeH = 0;
  var newSizeW = width;
  if (useScaleH < height) {
    var newSizeH = height;
    var newSizeW = 0;
  }

  var scaled = ResizeImage(input, newSizeW, newSizeH);
  var x = ((scaled.PixelWidth - width) / 2);
  var y = ((scaled.PixelHeight -height) / 2);
  var stride = scaled.PixelWidth * (scaled.Format.BitsPerPixel / 8);
  var result = new WriteableBitmap(width, height, scaled.DpiX, scaled.DpiY, scaled.Format, null);
  var data = new byte[scaled.PixelHeight * stride];
  var copyWidth = scaled.PixelWidth - (scaled.PixelWidth - width);
  var copyHeight = scaled.PixelHeight - (scaled.PixelHeight - height);
  if (x < 0) {
    x = 0;
    copyWidth = scaled.PixelWidth;
  }
  if (y < 0) {
    y = 0;
    copyHeight=scaled.PixelHeight
  }

  scaled.CopyPixels(data, stride, 0);
  result.WritePixels(new Int32Rect(x, y, copyWidth, copyHeight), data, stride, 0, 0);

  return BitmapFrame.Create(result);
}

Det här ser mer avancerat ut än vad det är. Vi måste först räkna ut vilken sida som, när vi skalat ner bilden, kommer att vara lika stor som den nya bilden medan den andra sidan är större. När vi gjort det kan vi skala ner bilden proportionellt.

Vi skapar därefter en destinationsbild som är exakt så stor som vi vill ha den. Eftersom vår nedskalade bild är större än denna måste vi räkna ut en ram som skall användas för att beskära bilden. Det gör vi genom att räkna ut hur mycket som ”hänger över” i bredd- och höjdled. Vi centrerar bilden genom att dela dessa värden i hälften och koperar nu över de pixlar som ligger inom ramen till vår destinationsbild.

Viktigt att notera här är att om orginalbilden är mindre än destinationsbilden så kommer vi bara kopiera över bilden till det övre vänstra hörnet. Det är för att vi inte vill sträcka ut bilden och förstöra den. Det bästa är inte använda denna metod vid sådana bilder, utan i stället lösa det problemet på annat sätt, exempelvis genom att lägga en ram kring den.


Det här är resultatet. Jag har talat om att bilden skall vara 500 px bred och 200 px hög. Min orginalbild är stående och denna liggande, därför förlorar vi mycket av bilden. Två bildformat som ligger nära varandra i proportioner resulterar

Avkoda och koda bilder från disk/ström.

För att allt det här ska fungera behöver du också några småsaker, exempelvis en bild-decoder och en bild encoder. Självklart finn detta inbyggt och är inte direkt rocket-sience. Här kommer lite exempel:

Stream orginalImage = null; //Load stream from image-file or like.
var orginalImageDecoder = BitmapDecoder.Create(
                                    orginalImage,
                                    BitmapCreateOptions.PreservePixelFormat,
                                    BitmapCacheOption.None);
BitmapSource source = orginalImageDecoder.Frames[0];

När du skall spara dina omskalade bilder kan du göra det i sex format som Microsoft tillhandahåller. Dessa är

  • BmpBitmapEncoder
  • GifBitmapEncoder
  • JpegBitmapEncoder
  • PngBitmapEncoder
  • TiffBitmapEncoder
  • WmpBitmapEncoder

alla dessa format används på samma sätt som nedan. JpegBitmapEncoder har dessutom möjlighet att sätta kvalité för kompressionen.

Stream resizedImage = null; //Init a writable stream for the destination
BitmapFrame resizedImageFrame = null; //Frame from one of the resize algorithms above.
var targetEncoder = new JpegBitmapEncoder(){
    QualityLevel = 85;
};
targetEncoder.Frames.Add(resizedImageFrame);
targetEncoder.Save(resizedImage);

Jag hoppas att det här har väckt dina tankar lite kring att kanske använda WPF för att göra din bildmanipulering i framtiden.

I love New York – ett nytt grepp

tisdag, maj 17th, 2011

I mitten på 70-talet var New Yorks rykte inte på topp. Hög brottslighet gjorde att staden behövde marknadsföra sig utifrån ett turistperspektiv. De hyrde in en reklambyrå som gjorde en kampanj men också den grafiske designern Milton Glaser. Det var Milton som kom på den numera klassiska bilden:

Troligen fick Milton inspiration av en kampanj som kom redan 1969 och hette Virgina is for lovers. Hur som helst är det idag en av de mest kopierade logotyperna i världen. Men alla kopior tillför inte något nytt förutom möjligen den svenska staden Hjo som lite fyndigt för till det med ”I live Hjo” som leker lite med det svenska och engelska språket. Men i genren turiststadslogotyper har inte mycket hänt sedan 70-talet. Tills nu.

Amsterdam har nämligen fått till det. Dessutom på ett sätt som inte går att kopiera. I varje fall i de fall där stadens namn inte börjar på am. Vad har då Amsterdam gjort? Jo, det här:

Färjestad – Brynäs hade 5531 åskådare!

onsdag, mars 9th, 2011

Jag har tidigare bloggat om att det är de små detaljerna som kommer bli viktigare och viktigare för en webbplatsägare. Ibland är det tyvärr stora detaljer. I måndags försökte jag köpa 3 biljetter till Färjestad – Brynäs på Löfbergs Lila Arena via ticnet.se. Det var min fru, min dotter och hennes kusin som ville gå. Jag letade därför billiga sittplatsbiljetter. Observera att bilderna nedan inte är den match jag skriver om utan nästa hemmamatch. Funktionen är ändå samma.

Jag valde en biljett till ordinarie pris och två ungdomsbiljetter. Ticnet kommunicerade så här:

Allting var frid och fröjd. 395 kronor och Tufvesson klickade glatt på ”Bekräfta”. Nästa steg gjorde mig lite ställd. Vad vill Ticnet att jag skall göra nu? Jag skall lägga till att jag har provat på en Mac, tre stycken Pc med olika webbläsare och får samma resultat. Jag kom hit:

Mina biljetter står i den grå rutan, men priset är för en ordinarie vuxenbiljett med serviceavgift. Mina biljetter skulle kosta 395 kronor plus serviceavgift. Det största problemet är ändå hur jag skall gå vidare i processen. Här tog det stopp. Färjestads BK missade sin chans att få 5534 betalande besökare här. Hur många fler har de missat på grund av det här?

De små detaljerna kommer bli viktigare på webben

måndag, januari 24th, 2011

Jag har sagt det förut i en bloggpost om Philips.se. Det är de små detaljerna på en webbplats som kommer bli avgörande om vi gillar en webbplats eller inte. Idag har de flesta organisationer en ganska bra webbnärvaro. Visst finns det exempel på som motsäger det men på en sikt av 2-3 år kommer det vara små detaljer som styr om en besökare gillar eller inte gillar en webbplats.

Idag ligger jag i min säng med en praktförkylning. Passade på att se vad som har hänt i världen och fick till Aftonbladet.se. När jag läst en artikel om att Fortum tar dubbelt som mycket betald för nätavgiften som Luleå energi försökte jag klicka på en länk och fick en 404 fast på Aftonbladets sätt:

Varför måste jag som besökare tala om för er att det finns en länk som inte fungerar. Vore det inte bättre att den ansvarige för en artikel fick  ett mail när en sida rapporterar att en länk på en sida är felaktig? Det är tekniskt sett inte svårt. Jag har själv gjort en sådan funktion för ett antal år sedan och kan jag så kan Aftonbladets utvecklare säkert. Det är dags att förbättra er 404-sida köra Aftonbladet.

Vinnare i Episerver Awards 2010

fredag, oktober 29th, 2010

Den här bloggen handlar om affärsnytta och fantasi på internet. När vi startade den så kom vi överens om att det inte skulle bli en marknadsföringskanal för Two. Mina damer och herrar, DET SKITER JAG I! För igår bjöd Episerver in till Episerver Awards och Two var nominerad i klassen ”Bästa webb riktad till konsumenter (B2C)” med vår kund Skistar. Jag satt på en teater i Karlstad (ja, jag hade ”glömt” stänga av mobilen) och följde prisutdelningen på Twitter. Som de brukas i prisutdelningar sparade Episerver det största priset till sist (här kanske jag inte är helt ödmjuk…). Först kom prisutdelningen för ”Bästa innovation”, ”Bästa intranät”, ”Bästa webb offentlig sektor” och ”Bästa webb riktad till företag och organisationer (B2B)”.

I klassen för ”Bästa webb riktad till konsumenter” fanns:

Skistar (av Two med bokningsmotor från AdePrimo)

Tre (Isotop/Deasign)

Västsvenska Turistrådet (M2B)

Östgötatrafiken (Sogeti)

När pausen på min teater nästan var slut och min fru petade mig i sidan att jag var tvungen att lägga bort telefonen kom tweeten från jurymedlemmen Pierre Du Rietz med vinnaren:

Jag (och mina kollegor på Two) har långsiktigt jobbat tillsammans för att Skistars webbplatser skall bli ett ställe att inspireras och sedan boka en upplevelse på. Tillsammans med AdePrimo som sköter det otroligt komplexa bokningssystemet har vi nått långt och lyckats skapa en webbplats som har varit väldigt framgångsrik. Jag är glada och till och med lite lyckliga över priset men framför allt glad för Skistar att de har fått det erkännandet som priset innebär. Vi på Two sitter inte stilla och njuter speciellt länge för det här, naturligtvis blir det lite bubbel i eftermiddag men på måndag skall vi upp till Sälen och ta Skistar vidare inom den digitala kommunikationen. Det skall bli en fantastik kul resa.

Vi gratulerar också vinnarna i de andra klasserna:

Bästa Inovation – Fastighetsbyråns intranät (Nansen)

Bästa intranät – Coop butiker och stormarknad (Sogeti/Söderhavet)

Bästa webb offentlig sektor – Energimyndigheten (Sogeti)

Bästa webb riktad till företag och organisationer (B2B) – StreamServe  (The Interactive Circuit)

Att vinna Episerver Awards ger dessutom inspiration till nästa år. Jag vet precis vilken webb jag vill vara med och tävla när 2011 års Episerver Awards går av stapeln.

Som jag sa i början så skall denna blogg inte handla om Two och det här inlägget är ett undantag. Förlåt…

Användartester inom webbproduktion

onsdag, oktober 27th, 2010

Nyligen hade jag en väldigt intressant dag tillsammans med ledande personer inom tester och däribland eyetracking.  Vi hade en halvdag tillsammans för att diskutera ett eventuellt spännande forskningsprojekt.  Det vore roligt om det kunde bli verklighet då jag gärna vill att Two ligger i framkant inom det vi sysslar med.

Vad som slår mig dock är att alla tester som görs idag utgår från start/hemsidan och  därifrån får testpersonen göra ett antal uppgifter. Tester skall ju simulera verkligheten men är detta verkligen rätt sätt?  Idag så är en normal siffra att 40-70% av trafiken till en webb kommer från sökmotorer vilket innebär att varje sida på en webb är en potentiell startsida. Detta är ju inget nytt för de som har lite hum inom sökmotoroptimering men det är däremot nytt inom test såvitt jag kunnat förstå.

Alltså mitt budskap är att när man gör tester  så kanske man skall ta en ny approach. Jag har inget riktigt bra svar idag hur man borde göra  istället men ett är säkert. Verkligheten startar sällan på startsidan och detta måste avspegla testmetodiken framgent.  Ser fram emot fortsatt diskussion!

Jakten på en AD

torsdag, juli 1st, 2010

Det är alltid kul att få nya kollegor. Att få ett nytt ansikte att hoppfullt få vända sig emot under interna idémöten eller i svettiga pitchar där allt hänger på en bra prestentation. Det ska bli extra kul att få ombord en ny AD, vem det nu än blir. Personligen har jag stora förväntningar på att denna tjej eller kille inte bara är en vass kreatör och formgivare utan även blir den förste på Two att dela min musiksmak. A sweet blend of Skid Row and The Killers! Jag inser att sannolikheten för att detta sa bli verklighet inte är stor, men jag är en optimist.

I min roll, där idéförsäljning är central, är AD:n en av de personer som jag förlitar mig allra mest på. Har man kundansvar som en viktig hörnsten i sitt arbete är det ibland lätt att bli försiktig, att hellre föreslå det beprövade och trygga istället för att hoppa in i terrängbilen och sätta av i en helt ny riktning som går genom mer outforskad terräng och som kan leda fram till en orörd och vacker sommaräng. F*n, ursäkta den usla metaforen. Du ser: Vi behöver ännu fler kreatörer på Two som verkligen kan paketera budskap.

Vad jag personligen verkligen vill få fram – och som jag ser vår Twos blogg som en bra anslagstavla för – är att du som söker AD-tjänsten hos Two kommer att bli en grymt viktig lagmedlem. Du kommer att få dina utmaningar, var så säker, och du kommer märka att Two inte är ett företag fyllt av konformitet. Vi tycker olika. Vi ÄR olika. Och det är det som gör det förbaskat kul att arbeta på Two. När vi sedan också ser att våra olikheter blir en grym styrka i våra leveranser till kunden, ja… det gör ju knappast att vi ser våra olikheter som ett problem. Tvärtom.

Jag hoppas DU, käre AD, som av någon händelse har halkat in på denna blogg och läser dessa rader inser hur många grymt spännande kunder och case som vi har i huset. Det är klart att det underlättar om du är relativt erfaren och har jobbat med ledande varumärken förut. Men samtidigt är vi bra på att identifiera talanger. Och det har ju väldigt lite med erfarenhet att göra. Är man en vass kreatör så är man!

Skicka din ansökan till johan.cedercrona@two.se. Johan är ansvarig på Two Communication för vårt totala erbjudande. Johan är på utlandssemester denna vecka men kommer därefter – och framförallt från den 15 juli – att börja gå igenom alla ansökningar.

Sociala knappar

fredag, april 30th, 2010

De populär knapparna för de olika sociala webbplatserna – som du som besökare använder för att dela med dig av sidan – börjar dyka upp både här och där i alla dess former. Den här varianten har en ganska kul grundidé, men faller ordentlig på att antalet är för många.

Logotyper från ett antal sociala siter

Alldeles för många logotyper, där bara halva syns, gör det svårt att hitta den jag söker och vill dela med mig. Här bör man istället prioritera ett antal eller välja en annan form.

Nya ICA.se

onsdag, april 28th, 2010

Någon gång i början av den här veckan så lanserade ICA sin nya webbplats på www.ica.se. Responsen har väl varit någorlunda kritisk bland de som uppmärksammat det och jag tänkte helt enkelt försöka komma med lite konstruktiv kritik och peka på några förbättringsåtgärder.

Givetvis ska det tilläggas att jag inte varit med i processen och inte har den insikt kring ICA:s grafisk profil och heller inte andra beslut och tekniska förutsättningar som finns i projektet, men jag ger mig på det visuella och ska försöka ge min syn på vart det brister i fallet av startsida på ica.se

I det stora hela är det en rörig förstasidan som användaren möts av. En stark röd färg i bakgrunden som jag upplever stör mig. Röd har alldeles för stark karaktär. Det finns inte direkt någon kontrast i form eller typografi som gör att jag guidas genom startsidan. Det är helt upp till mig vad som är viktigt, jag får själv ta beslutet. Och inget ser intressant ut.

Man har valt att lägga en relativt stor ”receptsnurra” i topp på sidan. En bra idé men den är utformad något taffligt, alldeles för många bilder syns i snurran och det ger ett rörigt intryck. Texten som hör till receptet, och framförallt pilarna för att navigera genom snurran, är otydliga. Samhörigheten och tydligheten saknas är min åsikt.

På startsidan finns också ett antal ytor – eller puffar – som alla har samma form, samma typografi och lika stora tumnaglar. Jag önskar större tumnaglar generellt men också extra stora på ett urval av puffarna. Jag önskar variation i typografin och jag önskar variation i storlekarna på de olika puffarna. Kan vi göra några puffar som är lite viktigare än några andra och navigerar mig visuellt genom starten? Är tumnaglarna relevanta när de är så små? Plockar vi bort några och kan på så sätt undvika ett gytter?

Rent övergripande saknar jag formen som finns på de nya produkterna, de egna varorna från ICA. Det finns spår här och där, men de nya illustrationerna skulle kunna användas smartare och mer inspirerande. Och färg! Mer färg och färre hårda skuggor önskas.

Avslutningsvis. Valet av Tahoma och typografin gör att jag får känslan av ett alldeles för högt tempo i texter. Lugna ned, skapa intressant typografi och bättre tumnaglar så har vi kommit en bit på vägen. Nästa steg kan vara att blanda in fler färger än röd, vit och grå?

Google redesign?

måndag, april 19th, 2010

Google, välkänt för att testa sina många olika nyanser av blå, testar nu tydligen en ny design, bland annat med varmare färger i logotypen. http://sixrevisions.com/user-interface/new-google-web-design/