PNG图片生成 缩略图背景不透明,黑色背景,怎么做才能透明呢?

问题描述

生成PNG缩略图背景怎么透明?透明背景的PNG图片用C#生成一下,原来的背景就变黑色了,请问有方法解决么?请高手或有经验的同仁帮办解决.谢谢.........代码如下:///<summary>///生成缩略图///</summary>///<paramname="originalImagePath">源图路径(物理路径)</param>///<paramname="thumbnailPath">缩图路径(物理路径</param>///<paramname="width">缩略图的宽度</param>///<paramname="height">缩缩略图的高度</param>///<paramname="mode">生成缩略图的方式</param>publicstaticvoidCreateThumbnailImage(stringoriginalImagePath,stringthumbnailPath,intwidth,intheight,stringmode,stringsaveFormat){//ImageoriginalImage=Image.FromFile(INKRequest.Server.MapPath(originalImagePath));inttowidth=width;inttoheight=height;intx=0;inty=0;intow=originalImage.Width;intoh=originalImage.Height;switch(mode){case"HW"://指定高度缩略(可能变形)break;case"W"://指定宽度,高按比例toheight=originalImage.Height*width/originalImage.Width;break;case"H"://指定高,宽按比例towidth=originalImage.Width*height/originalImage.Height;break;case"CUT"://不变形if((double)originalImage.Width/(double)originalImage.Height>(double)towidth/(double)toheight){oh=originalImage.Height;ow=originalImage.Height*towidth/toheight;y=0;x=(originalImage.Width-ow)/2;}else{ow=originalImage.Width;oh=originalImage.Width*height/towidth;x=0;y=(originalImage.Height-oh)/2;}break;default:break;}//新建一个BMP图片Imagebitmap=newSystem.Drawing.Bitmap(towidth,toheight);//Imageim=newSystem.Drawing.//新建一个画板Graphicsg=System.Drawing.Graphics.FromImage(bitmap);//设置高质量插值法g.InterpolationMode=System.Drawing.Drawing2D.InterpolationMode.High;//设置高质量,低速度呈现平滑程度g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;//清空画布并以透明背景色填充g.Clear(Color.Transparent);//在指定位置并且按指定大小绘制原图片的指定部分g.DrawImage(originalImage,newRectangle(0,0,towidth,toheight),newRectangle(x,y,ow,oh),GraphicsUnit.Pixel);try{//以jpg格式保存缩略图switch(saveFormat){case"PNG":bitmap.Save(thumbnailPath,System.Drawing.Imaging.ImageFormat.Png);break;case"GIF":bitmap.Save(thumbnailPath,System.Drawing.Imaging.ImageFormat.Gif);break;case"BMP":bitmap.Save(thumbnailPath,System.Drawing.Imaging.ImageFormat.Bmp);break;case"JPG":bitmap.Save(thumbnailPath,System.Drawing.Imaging.ImageFormat.Jpeg);break;default:bitmap.Save(thumbnailPath,System.Drawing.Imaging.ImageFormat.Jpeg);break;}}catch(System.Exceptione){throwe;}finally{originalImage.Dispose();bitmap.Dispose();g.Dispose();}}

解决方案

解决方案二:
//清空画布并以透明背景色填充g.Clear(Color.Transparent);把上面的改成//清空画布并以白色填充g.Clear(Color.White);
解决方案三:
楼上的正解
解决方案四:
引用1楼tbwind的回复:

//清空画布并以透明背景色填充g.Clear(Color.Transparent);把上面的改成//清空画布并以白色填充g.Clear(Color.White);

顶一个
解决方案五:
这个我也在问,我的画布下面有东西的要求在透明的画布上画东西。所以画布不能填充为白色。哪位帮我看看啊顺便帮顶~~http://topic.csdn.net/u/20100128/18/dc6cd0e9-bc08-4b4d-a32e-4d68a968c2b9.html
解决方案六:
要透明,就不能使用jpeg格式保存,只能使用png,gif格式保存图片,jpeg格式本身是不支持透明的。
解决方案七:
引用5楼jimh的回复:

要透明,就不能使用jpeg格式保存,只能使用png,gif格式保存图片,jpeg格式本身是不支持透明的。

和格式无关,就是在用透明色填充画布的时候画布显示的是黑色。
解决方案八:
是图片显示时要背景透明吗像背景图片的背景色为透明的吗是的话是把TransparencyKey设置为位图文件背景色因为我菜鸟不知道你要的是不是这,你的好像是自绘的
解决方案九:
System.Drawing.BitmapmapGear=newSystem.Drawing.Bitmap(picWidth,picWidth,System.Drawing.Imaging.PixelFormat.Format8bppIndexed);mapGear.MakeTransparent()
解决方案十:
//清空画布并以透明背景色填充g.Clear(Color.Transparent);删除
解决方案十一:
遇到同样的问题,这些方法都试了,还是不行,在画图程序中打开,背景依然为黑色
解决方案十二:
OpenFileDialogofd=newOpenFileDialog();ofd.Filter="PDN|*.png";if(ofd.ShowDialog()==DialogResult.OK){Imageimg=Image.FromFile(ofd.FileName);if(img!=null){img.GetThumbnailImage(20,20,null,IntPtr.Zero).Save("C:\thumb.png");}}

经测试,没有任何问题
解决方案十三:
浏览器问题有的浏览器不支持PNG透明
解决方案十四:
//新建一个BMP图片Imagebitmap=newSystem.Drawing.Bitmap(towidth,toheight);这个修改下,改成Imagebitmap=newSystem.Drawing.Bitmap(towidth,toheight,PixelFormat.Format32bppPArgb);

时间: 2024-07-31 06:52:17

PNG图片生成 缩略图背景不透明,黑色背景,怎么做才能透明呢?的相关文章

给图片生成缩略图和加版权的类

缩略图 给图片生成缩略图和加版权的类 最近几天看了一下PHP的图片处理方面的功能,以前这方面的需求比较少,也就没怎么看,最近有空看了一下.感觉图片处理一些简单的功能还可以,复杂的就算了,GD库都2.0.1了,还是不支持中文,看了几篇文章,想使用中文只能先将GB2312转换成UNICODE再写入图片,太麻烦了,索性只使用英文算了. 在图像生成部分可以定义图片的最大高,宽,比较适用于新闻及相册等系统. GD2.0.1在图片处理上有很大提高,我试了下imageCopyResized和imageCopy

图片生成缩略图代码

图片生成缩略图代码 <?php # Constants define("IMAGE_BASE", './'); define("MAX_WIDTH", 150); define("MAX_HEIGHT", 150); # Get image locationstr_replace('..', '', $_SERVER['QUERY_STRING']); $image_file = 't.jpg'; $image_path = IMAGE_B

PHP给图片生成缩略图和加版权的类

最近几天看了一下PHP的图片处理方面的功能,以前这方面的需求比较少,也就没怎么看,最近有空看了一下.感觉图片处理一些简单的功能还可以,复杂的就算了,GD库都2.0.1了,还是不支持中文,看了几篇文章,想使用中文只能先将GB2312转换成UNICODE再写入图片,太麻烦了,索性只使用英文算了. 在图像生成部分可以定义图片的最大高,宽,比较适用于新闻及相册等系统. GD2.0.1在图片处理上有很大提高,我试了下imageCopyResized和imageCopyResampled,后者处理的图片明显

PHP智能把图片生成缩略图类

 代码如下 复制代码 < ?php     /***************************************  *作者:落梦天蝎(beluckly)  *完成时间:2006-12-18  *类名:CreatMiniature  *功能:生成多种类型的缩略图  *基本参数:$srcFile,$echoType  *方法用到的参数:                  $toFile,生成的文件                  $toW,生成的宽                  $

支持png透明图片的php生成缩略图类分享

 这篇文章主要介绍了支持png透明图片的php生成缩略图类分享,本文代码基于GD2图形库,实现支持png透明图片生成缩略图,需要的朋友可以参考下     注:此功能依赖GD2图形库 最近要用php生成缩略图,在网上找了一下,发现了这篇文章:PHP生成图片缩略图 试用了一下后,发现有这样几个问题: 1.png图片生成的缩略图是jpg格式的 2.png图片生成的缩略图没有了透明(半透明)效果(填充了黑色背景) 3.代码语法比较老 因此,在这个版本的基础上简单修改优化了一下. PHP生成缩略图类 ?

ASP保存远程图片到本地,并生成缩略图

ASP通过XMLHTTP获取远程图片流数据,并保存到本地,把第一张采集到的图片生成缩略图. 具体代码如下: <% '================================================== '函数名:CheckDir2 '作 用:检查文件夹是否存在 '参 数:FolderPath ------文件夹地址 '================================================== Function CheckDir2(byval Folder

c#多图片上传并生成缩略图的实例代码_实用技巧

前台代码: 复制代码 代码如下:  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="upload.aspx.cs" Inherits="upload" %>  <!DOCTYPE html>  <html xmlns="http://www.w3.org/1999/xhtml"> <head runat

php图片处理类(生成缩略图,增加水印,获取图片信息)

本文章提供这款图片处理类,他可以做的事情有把图片生成缩略图,可能给图片增加水印以及获取图片信息,算是比较实用代码又简洁的函数*/  代码如下 复制代码 class image {  public $info=array();  function __construct()  {   !extension_loaded('gd') && exit("www.111cn.net提示:服务器环境不支持gd库");   return true;  }  function ima

AJAX实现图片预览与上传及生成缩略图的方法

要实现功能,上传图片时可以预览,因还有别的文字,所以并不只上传图片,实现与别的文字一起保存,当然上来先上传图片,然后把路径和别的文字一起写入数据库:同时为 图片生成缩略图,现只写上传图片方法,文字在ajax里直接传参数就可以了,若要上传多图,修改一下就可以了. 借鉴了网上资料,自己写了一下,并不需要再新加页面,只在一个页面里就OK啦. JS代码: //ajax保存数据,后台方法里实现此方法 function SaveData() { filename = document.getElementB