Avatar billede syncroniq Nybegynder
03. oktober 2002 - 10:55 Der er 7 kommentarer og
1 løsning

Graphics -> Gif?

Hey,

Jeg har lavet noget Graphics i en applet som jeg gerne vil have lavet om til et Gif billede eller lig.

Nogen der kender nogle metoder eller hvordan man gør?

/Syncroniq
Avatar billede disky Nybegynder
03. oktober 2002 - 11:18 #1
Pga. licens problemmer kan JAVA ikke per default lave GIF billeder.

Men hente ACME's gif encoder fra www.acme.com den fungerer fint.

Jeg har f.eks. selv brugt den til www.subnet.dk's counter.
Avatar billede syncroniq Nybegynder
03. oktober 2002 - 12:16 #2
Hey,

Kanon. Gemmes gif billederne så et lille stykke tid på serveren eller kan man streame dem direkte ud? Jeg skal lave en applet om til en JSP side (med en servlet som kontrolpunkt).

/Henrik
Avatar billede disky Nybegynder
03. oktober 2002 - 12:20 #3
Det jeg gjorde i subnet løsningen, var at det link man lavede på sin webside kaldte en servlet som returnerede et gif billede direkte.
Avatar billede syncroniq Nybegynder
03. oktober 2002 - 12:23 #4
hvordan returnere man det direkte. Det har jeg tænkt lidt over, og kan ikke rigtig komme frem til hvordan.

(Skal jeg oprette det som et nyt spg?)

/Henrik
Avatar billede disky Nybegynder
03. oktober 2002 - 12:39 #5
Når du fra en html side har en <img src="lavCounter.servlet&id=1111">

Så requester browseren denne fil 'lavCounter.servlet&id=1111'

Der under ligger der så en servlet som returnerer de binære data til et gif billede.

Jeg har ikke adgang til min egen source kode derhjemme så jeg kan ikke lige hvis dig det nu, men senere kan jeg poste den.
Avatar billede syncroniq Nybegynder
03. oktober 2002 - 12:46 #6
Du må meget gerne poste den når du kommer hjem.

Tusinde tak for hjælpen.

/Henrik
Avatar billede disky Nybegynder
03. oktober 2002 - 21:26 #7
Her er hele koden, du vil nok ikke kunne compile den, men den giver et indtryk af hvad der sker.
Avatar billede disky Nybegynder
03. oktober 2002 - 21:26 #8
import sol.subnet.*;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import Acme.JPM.Encoders.GifEncoder;

public class counter extends HttpServlet
{
    private final String     path="/usr/subnet/www/gfx/digits/";
    private final String    defaultStyle="0";
       
    private fontgrabber fg = null;
    private fontinfo fi = null;
    private GifEncoder gifEncoder = null;

    /** Holds value of property counter. */
    private int counter;
    /**
    * Service
    * Handles GET request-response
    * @param    HttpServletRequest, HttpServletResponse
    */
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.setContentType("image/gif");


        //make sure that the GIF pictures is not being cached by browser or proxy server
        response.setDateHeader("Expires", 0);
        response.setHeader("Pragma", "no-cache");
        if (request.getProtocol().equals("HTTP/1.1"))
        {
            response.setHeader("Cache-Control", "no-cache");
        }
       
        //get the outputStream from the response object
        ServletOutputStream out=response.getOutputStream();

        //get querystring information
        String page=request.getParameter("page");
        String temp=request.getParameter("width");
        String style=request.getParameter("style");
        String inc="1";                        //hardcoded to always be 1
        String fgcolor=request.getParameter("fgcolor");
        String bgcolor=request.getParameter("bgcolor");

        //select default style if none has been selected by siteowner
        if( (style==null) || (style.equals("")) )
        {
            style=defaultStyle;      //if no style selected choose per default style 0
        }

        int width=0;
       
        if( (temp!=null) && (!temp.equals("")) )
        {
            width=Integer.parseInt(temp);

            if(width>9)
            {
                width=9;
            }
        }
       
        String homepageName=HtmlUtil.getHomepageName(request);
        String pathName=HtmlUtil.getHomepagePath(request);

        if(homepageName.equals("InvalidDomain"))
        {
            return;
        }
       
        if(pathName==null)
        {
            return;
        }

        //get new value of the counter from the base     
        DataBase.executeStoredProcedure("GETCOUNTER", new Object[] { homepageName, pathName}, this);
        String tal="";

        int len=(""+counter).length();

        if(width==0)
        {
            width=len;
        }

        if(width<len)
        {
            tal=Integer.toString(counter);

            tal=tal.substring(tal.length()-width,tal.length());
        }
        else
        {
            for(int x=0;x<width-len;x++)
            {
                tal+="0";
            }
            tal+=Integer.toString(counter);
        }

        if (readBitmap(path+style+".ffi"))
        {
            //Transparent => color < 0x08000000
            fg = new fontgrabber(fi, tal, 0x07000000);
            gifEncoder=new GifEncoder(fg.getImageProd(),out);
            gifEncoder.encode();
        }
    }

 
    /**
    * Reads Bitmap and font descriptor.
    */
    private boolean readBitmap(String fn)
    {
        /*-- Load font descriptor --*/
        FileInputStream fis = null;
        ObjectInputStream ois = null;
        try
        {
            fis = new FileInputStream(fn);
            ois = new ObjectInputStream(fis);
            fi = (fontinfo)ois.readObject();
            ois.close();
            fis.close();
        }
        catch (Exception e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        return true;
    }
    /** Getter for property counter.
    * @return Value of property counter.
    */
    public int getCounter()
    {
        return counter;
    }
    /** Setter for property counter.
    * @param counter New value of property counter.
    */
    public void setCounter(int counter)
    {
        this.counter = counter;
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester