Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Transparenta giffar

Postades av 2005-06-28 15:20:43 - Mikael Lundgren, i forum c# (c-sharp), Tråden har 2 Kommentarer och lästs av 692 personer

Jag har gjort en hel applikation för att ladda upp bilder till en websida i ASP.NET/C#.
Förutom att automatiskt storleksanpassa bilden så kan den ex. spara om TIF-filer till JPG m.m.
Problemet är just nu att det inte funkar för transparenta gif-filer. Bakgrundsfärgen blir svart.

Jag har försökt att läsa på webben om detta och det verkar inte helt enkelt. Någon som har ett enkelt tips?

En tanke var att man skulle kunna ta reda på vilken färg i paletten som är genomskinlig och sedan sätta den just innan man sparar bilden.


Bifogar Resize-funktionen. Det verkar vara där som den uppladdade bilden tappar sin genomskinlighet.

Tack på förhand

/Mikael

------------------------------------------


Bitmap ResizeImage(Stream stmInput, int inputMaxWidth, int inputMaxHeight){
float tmpHeight;
float tmpWidth;

Bitmap bmInput = new Bitmap(stmInput, true);
tmpHeight = bmInput.Height;
tmpWidth = bmInput.Width;
bmInput.Dispose();


if (tmpWidth > inputMaxWidth) {
float scaleX = inputMaxWidth / tmpWidth;
tmpWidth = tmpWidth * scaleX;
tmpHeight = tmpHeight * scaleX;
}
if (tmpHeight > inputMaxHeight) {
float scaleY = inputMaxHeight / tmpHeight;
tmpWidth = tmpWidth * scaleY;
tmpHeight = tmpHeight * scaleY;
}

picWidth = Convert.ToInt32(tmpWidth);
picHeight = Convert.ToInt32(tmpHeight);
int Quality = 100;

System.Drawing.Image image = System.Drawing.Image.FromStream(stmInput);
Bitmap bmp = new Bitmap(picWidth, picHeight);
bmp.SetResolution(image.HorizontalResolution, image.VerticalResolution);
Graphics gr = Graphics.FromImage(bmp);

gr.FillRectangle(new SolidBrush(Color.Transparent), 0, 0, picWidth, picHeight);
gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
gr.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
gr.DrawImage(image, 0, 0, picWidth, picHeight);
gr.Save();

EncoderParameters eps = new EncoderParameters(1);
eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Quality);
return bmp;

image.Dispose();
bmp.Dispose();

}


Svara

Sv: Transparenta giffar

Postades av 2005-06-28 15:48:46 - Roger Alsing

några frågor:

EncoderParameters eps = new EncoderParameters(1);
eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Quality);

var när o hur blir den koden inblandad?


och:
return bmp;

image.Dispose();
bmp.Dispose();

den koden kommer inte att köras eftersom det ligger efter return... dessutom vill du inte disposa "bmp" eftersom du ska returnera den till någon...

det är lite som ett precis innan du ger någon en present så slår du sönder den med en hammare :)
(fast i det här fallet spelar det ingen roll eftersom den koden inte körs alls)


Svara

Sv: Transparenta giffar

Postades av 2005-06-29 07:50:21 - Andreas Paulsson

Jag har gjort liknande tidigare och det hela bygger på i stort sett fyra saker:

1. Ursprungsbilden skall ha en alpha-kanal.
2. Målbilden skall ha en alpha-kanal.
3. Rita med DrawImage med InterpolationMode satt till HighQualityBicubic
4. Det man sedan gör med bilden skall kunna hantera en alpha-kanal.

1. Är förmodligen OK eftersom du skapar den via FromStream som då läser upp den som en transparent Image.
2. Är förmodligen också OK eftersom konstruktorn Bitmap(width, height) skapar en bitmap med Alpha-kanal.
3. Är också OK.
4. Vet jag inget om eftersom den koden inte visas. Sparar du bilden som jpeg (big nono eftersom jpeg inte stödjer transparens) eller ritar du den eller vad gör du med den?

Jag skulle gissa på punkt 4, men jag kan mycket väl ha missat någon detalj.

Du kan ävan kika på en konversation där de verkar ha fått det att fungera på http://www.dotnet247.com/247reference/msgs/45/229348.aspx.

/Andreas


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
704
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies