Avatar billede jayetc Nybegynder
25. april 2007 - 01:28 Der er 6 kommentarer og
1 løsning

Skære Jpeg og gemme uden tab?

Hey,

Er der nogen der ved om det er muligt at ta et høj kvalitet jpeg billeder, skrære det i fx. 9 stykker om gemme disse uden at kvaliteten falder?

Min kode virker fint, men jeg mister desværre noget kvalitet.
På forhånd tak.

Mvh
Jay
Avatar billede dr_chaos Nybegynder
25. april 2007 - 08:23 #1
Hvordan ser koden ud ?
Avatar billede jayetc Nybegynder
25. april 2007 - 17:16 #2
Ja det ville måske hjælpe lidt :)

Like this:
public unsafe static void NineCut(Bitmap image)
{
    List<Bitmap> theList = new List<Bitmap>();

    int cutX = image.Width / 3;
    int cutY = image.Height / 3;

    for (int i = 0; i < 3; i++)
    {
    for (int j = 0; j < 3; j++)
    {
        //
        Bitmap tempMap = new Bitmap(cutX, cutY, image.PixelFormat);
                    BitmapData dataTemp = tempMap.LockBits(new Rectangle(0, 0, cutX, cutY), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);

        //
        BitmapData data = image.LockBits(new Rectangle(j * cutX, i * cutY, cutX, cutY), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

        //
        byte* tempPtr = (byte*)(dataTemp.Scan0);
        byte* imgPtr = (byte*)(data.Scan0);
                   
        //
        for (int k = 0; k < data.Height; k++)
        {
        for (int l = 0; l < data.Width; l++)
        {
            //
            tempPtr[0] = (byte)imgPtr[0];
            tempPtr[1] = (byte)imgPtr[1];
            tempPtr[2] = (byte)imgPtr[2];

            // Go to next byte
            imgPtr += 3;
            tempPtr += 3;
        }

        // Remember to skip unused bytes.
        imgPtr += data.Stride - data.Width * 3;
        tempPtr += dataTemp.Stride - dataTemp.Width * 3;
        }

        // Unlock
        image.UnlockBits(data);
        tempMap.UnlockBits(dataTemp);

        theList.Add(tempMap);
    }
    }

    foreach (Bitmap bm in theList)
    {
        bm.Save(@"D:\final" + number + ".jpg", ImageFormat.Jpeg);
        bm.Dispose();
    }

    theList.Clear();
}
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 12:20 #3
Det er muligt at du skal smide noget kvalitet angivelse med når du gemmer:
http://msdn2.microsoft.com/en-us/library/system.drawing.imaging.encoder.quality.aspx
Avatar billede jayetc Nybegynder
03. maj 2007 - 19:38 #4
Helt perfekt.... :) Lige det jeg havde brug for!

Men Ehmm hvordan giver jeg dig dine point? :)
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 20:14 #5
jeg skal lave et svar som du skal accepterer :)
Avatar billede jayetc Nybegynder
03. maj 2007 - 20:19 #6
Nice... point givin' ;)
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 20:22 #7
tak :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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