-
bitmap经compress后保存jpg,原透明部分自动填充为黑色,如何让其填充为白色?
2015-08-20 02:32:34泣血以告: bitmap经compress后保存jpg,原透明部分自动填充为黑色,如何让其填充为白色? 答案如下代码: (其中,圆角程序主要部分为百度所得,来源众多,不知出处,故在此感谢大家,如有作者需标明出处请留言!)...泣血以告: bitmap经compress后保存jpg,原透明部分自动填充为黑色,如何让其填充为白色?
答案如下代码:
(其中,圆角程序主要部分为百度所得,来源众多,不知出处,故在此感谢大家,如有作者需标明出处请留言!)
(本文仅对重点标出的三行填充代码负责!)
/** * 画成圆角图片 */ public Bitmap getRoundCornerImage(Bitmap bitmap, int roundPixels) { /**创建一个和原始图片一样大小位图*/ Bitmap roundConcerImage = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); /**创建带有位图roundConcerImage的画布*/ Canvas canvas = new Canvas(roundConcerImage); /**创建画笔 */ Paint paint = new Paint(); /**创建一个和原始图片一样大小的矩形*/ Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); RectF rectF = new RectF(rect); /**去锯齿*/ paint.setAntiAlias(true); /**画一个和原始图片一样大小的圆角矩形*/ canvas.drawRoundRect(rectF, roundPixels, roundPixels, paint); /**设置相交模式 */ paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); /**把图片画到矩形去 */ canvas.drawBitmap(bitmap, rect, rectF, paint); /**引时圆角区域为透明,给其填充白色 */ paint.setColor(Color.WHITE); paint.setXfermode(new PorterDuffXfermode(Mode.DST_ATOP)); canvas.drawRect(rectF, paint); /// return roundConcerImage; }
有同学问:为什么一定要保存JPG,保存PNG不就行了嘛?答:PNG个头大呀,JPG才4K的小图片保存PNG成16K,So,本着对用户负责,对自己APP的极致要求,对追求完美的心。。。。。。
http://blog.csdn.net/lmj623565791/article/details/24555655 加深理解 -
大神求助,如何自动填充数据到表格里面,表格随数据动态变化 VBA
2017-04-25 08:45:13 或者在用户登录之后不提示这个 ![图片说明]... -
如何让Android UI使用更快更高效
2012-07-12 03:19:29视图背景图总是会填充整个视图区域,图像尺寸的不适合会导致图像的自动缩放,为了避免这种情况,我们可以先将图片进行缩放到视图的大小。 originalImage = Bitmap.createScaledBitmap( originalImage, //被...【IT168技术】之前有谈过如何使用adapter更高效的,现在在谈谈其他的。
一、选择恰当的图像尺寸
视图背景图总是会填充整个视图区域,图像尺寸的不适合会导致图像的自动缩放,为了避免这种情况,我们可以先将图片进行缩放到视图的大小。
originalImage = Bitmap.createScaledBitmap(
originalImage, //被缩放图
view.getWidth(), //视图宽度
view.getHright(), //视图高度
true //双限行过滤器
);
二、去掉不需要的默认窗口背景
在默认情况下,窗口有一个不透明的背景,有时候我们并不需要他,就可以去掉他。因为更新看不见的窗口是浪费时间的。
去掉的方法:
1.代码实现:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//删除窗口背景
getWindow().setBackgroundDrawable(null);
}
2.xml里实现:
首先去顶你的res/xml/styles.xml里有
然后在你的manifest.xml里声明<resources> <style name="NoBackGroundTheme" parent="android:Theme"> <item name="android:windowBackground">@null</item> </style> </resources>
<activity android:name="MyActivity" android:theme="@style/NoBackGroundTheme"> ...... </activity>
三、尽可能的使用简单的布局和视图
如果一个窗口包含很多的视图,那么启动时间长、测量时间长、绘制时间长、布局时间长;
如果视图树深度太深,会导致StackOverflowException异常,和用户界面反映会很慢很慢。
解决的方法:
1.使用TextView的复合drawables,减少层次
如有这样的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Image android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/image" android:background="@drawable/icon" /> </LinearLayout>
我们可以这样来取代他,从而来将少层次:<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:drawableRight="@drawable/icon"/>
2.使用ViewStub延迟展开视图
默认情况下,使用ViewStub包含的视图是不可见的。
<ViewStub android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/vs" android:layout="@layout/main"/>
这个里面包含的main视图是不会展现出来的,如果需要展现出来需要代码的处理
findViewById(R.id.vs).setVisibility(View.VISIBLE);
或者
findViewById(R.id.vs).inflate();
3.使用合并视图
默认情况下,布局文件的根作为一个借点加入到父视图中,如果使用可以避免根节点。
如果最外层的布局是FrameLayout,那么可以使用merge替换掉,引用官方说明:
Obviously, using works in this case because the parent of an activity's content view is always a FrameLayout. You could not apply this trick if your layout was using a LinearLayout as its root tag for instance.
<merge xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> ..... </merge>
4.使用RelativeLayout减少层次
5.自定义布局
-
iOS图片拉伸技巧
2015-07-30 11:12:11有些时候,我们使用的控件内容尺寸不确定,但是仍需要给它设定一个背景图片,如何让背景图片的大小可以跟随某个控件的大小来改变呢?在IOS里实现非常简单。 首先介绍一下九宫格吧,其实就是把图片切成9块,在程序...有些时候,我们使用的控件内容尺寸不确定,但是仍需要给它设定一个背景图片,如何让背景图片的大小可以跟随某个控件的大小来改变呢?在IOS里实现非常简单。首先介绍一下九宫格吧,其实就是把图片切成9块,在程序里,只需要设置4个角的大小即可,其他部分会自动实现填充。如下图所示:button.png,尺寸为:24x60,现在我们把它用作为按钮背景,按钮尺寸是150x50,代码如下:
// 初始化按钮
UIButton *button = [[UIButton alloc] init];
// 设置尺寸
button.bounds = CGRectMake(0, 0, 150, 50);
// 设置位置
button.center = CGPointMake(viewSize.width * 0.5f, viewSize.height * 0.5f);
// 加载图片
UIImage *image = [UIImage imageNamed:@"button"];
// 设置背景图片
[button setBackgroundImage:image forState:UIControlStateNormal];
// 添加按钮
[self.view addSubview:button];
效果如下:
可以看到,效果非常地差。原因很简单,因为原图大小为24x60,现在整张图片被全方位拉伸为150x50,比较严重的是图片的4个角。
有些人可能马上想到一个解决方案,你叫美工把图片做大一点不就好了么,怎么拉伸都没事。没错,这是一种解决方案,不过不建议采取。原因很简单:1.图片大,导致安装包也大,加载到内存中也大;2.有更好的解决方案。
细看一下图片,其实图片会变得难看,完全是因为4个角被拉伸了,中间的拉伸并没有明显地丑化外观。因此要想小图片被拉伸后不会变得难看,在图片拉伸的时候,我们只需拉伸图片的中间一块矩形区域即可,不要拉伸边缘部分。
首先介绍一下九宫格吧,其实就是把图片切成9块,在程序里,只需要设置4个角的大小即可,其他部分会自动实现填充。如下图所示:
在iOS 5.0中,UIImage有一个新方法可以处理图片的拉伸问题
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
这个方法只接收一个UIEdgeInsets类型的参数,可以通过设置UIEdgeInsets的left、right、top、bottom来分别指定左端盖宽度、右端盖宽度、顶端盖高度、底端盖高度
CGFloat top = 25; // 顶端盖高度
CGFloat bottom = 25 ; // 底端盖高度
CGFloat left = 10; // 左端盖宽度
CGFloat right = 10; // 右端盖宽度
UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);
// 伸缩后重新赋值
image = [image resizableImageWithCapInsets:insets];
在iOS6.0中,UIImage又提供了一个方法处理图片拉伸
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
对比iOS5.0中的方法,只多了一个UIImageResizingMode参数,用来指定拉伸的模式:
- UIImageResizingModeStretch:拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片
- UIImageResizingModeTile:平铺模式,通过重复显示UIEdgeInsets指定的矩形区域来填充图片
CGFloat top = 25; // 顶端盖高度CGFloat bottom = 25 ; // 底端盖高度CGFloat left = 10; // 左端盖宽度CGFloat right = 10; // 右端盖宽度UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);// 指定为拉伸模式,伸缩后重新赋值image = [image resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch];运行效果: -
Posterino让您的创意发挥到极致
2020-12-21 15:53:25你可以手动导入每张照片,或者让Posterino自动填充页面,再进行调整。 从背景颜色到照片间距,从相框到阴影,一切内容都可以调整。你还可以在拼贴画上添加文字与趣味图标(比如,精美的邮戳就特别适合用在旅行相册...Posterino mac版是Macos上一款图片编辑软件,并且包含各种丰富的精美模板和自定义选项,能给你带来更多灵感,帮您制作出各种精美的画框、照片墙,下面来一起看看该如何实现吧!
Posterino准备了许多不同风格的模板,包括平铺网格、随性堆、老照片与黑白风格等等。你可以手动导入每张照片,或者让Posterino自动填充页面,再进行调整。
从背景颜色到照片间距,从相框到阴影,一切内容都可以调整。你还可以在拼贴画上添加文字与趣味图标(比如,精美的邮戳就特别适合用在旅行相册里)
一切就绪,在你准备把杰作打印出来,或者发送到打印服务机构前,Posterino还能提醒你是否有图片分率过低的问题,以免让成品模糊不清。 -
FluidMask3.3.8(抠图软件)中文破解版.rar
2019-09-04 11:55:13支持自动填充图像,自动填充保留自动填充删除。软件通过模拟人眼和人脑的处理方法来实现精确的抠图,智能化处理让边界的区分更为平滑细腻,在处理过程中它将自动识别各种颜色的阴影及轮廓,并将它们分为各种小区,可... -
如何让机器读懂图片上的文字?飞桨助您快速了解OCR
2019-09-07 21:02:52导读:拍下快递单就能自动填充单号,拍下名片信息就能自动归类,拍下题目就能自动搜索到答案,你可知道,这些神奇的功能是如何实现的?今天,小编就带领大家一起探秘OCR,并带来一... -
专家门诊 Visual C++开发答疑300问 pdf书(含全部代码)
2009-11-16 22:20:23如何让应用程序在系统中只能存在一个运行的实例 第13章 时间控制 如何计算时间差 程序中如何嵌入日历 如何获得毫秒级的系统时间 如何让定时器精确到毫秒 如何对当前的系统时间进行操作 如何获得和修改目录的日期和... -
数字图像处理实战-字符识别流程
2020-06-10 16:34:44难点:如何找到OCR区域 步骤: 处理模板 1.读入模板 2.模板二值化 3.找模板轮廓的,定位到模板中的每一个字符位置 处理信用卡图片 4.读入待处理图像 5.灰度化 6.形态学操作 (顶帽)突出明亮区域 7.Sobel... -
图像处理工具 Hornil StylePix Pro 2.0.3.0 中文版.zip
2021-03-05 14:58:21Hornil StylePix具有一个直观的用户界面,它是为了让控制选择功能更加简单、方便而设计的,即使你没有经验,你也一样可以学会如何编辑图片和对你的照片进行润色。 总之,Hornil StylePix直观的用户界面可以减少您的... -
图形编辑处理(Hornil StylePix) v2.0.1 中文绿色版.rar
2019-07-09 23:26:57即使你没有经验,你也一样可以学会如何编辑图片和对你的照片进行润色。总之,Hornil StylePix直观的用户界面可以减少您的时间工作,为了编辑图片更好更快。 即使你没有经验,您可以轻松地学习如何编辑图像和修饰... -
即学即用:EXCEL.2007文秘与行政实战应用宝典.pdf
2013-01-31 09:53:51文秘应用 自动填充员工编号 1.5 复制与移动数据 1.5.1 使用复制、剪切功能复制与移动数据 1.5.2 通过拖动法复制与移动数据 1.6 查找和替换数据 1.6.1 查找替换文字或格式 1.6.2 使用通配符进行高级查找 1.7 防止输入... -
《Java Web开发实战1200例(第I卷)》(清华出版.卢瀚.王春斌).part2 高清完整PDF版
2016-06-13 12:06:47实例079 文字的图案填充效果 实例080 文字的探照灯效果 实例081 文字的闪烁效果 实例082 文字的空心效果 实例083 文字的浮雕效果 实例084 文字的阳文效果 实例085 文字的雪雕效果 实例086 文字的火焰效果 ... -
300个注册表优化修改文件
2011-11-20 21:11:36设置DOS下的自动填充命令.reg 设置Windows的安装路径信息.reg 设置窗口的缩放控制.reg 设置禁用活动桌面.reg 设置鼠标的滚动行数.reg 设置拖动整个窗口.reg 设置显示文件的扩展名.reg 设置在我的电脑中显示打印机... -
073《Chrome Better History》如何让Chrome查找历史记录更方便? 072《OneNote Web Clipper》微软免费跨平台笔记OneNote扩展程序 071《Color Tab》色彩猎人优质配色提升你的审美 070《网盘助手》网盘万能钥匙,...
-
Visual C++开发实战1200例(第1卷).(清华出版.刘锐宁.梁水.李伟明).part1
2016-06-16 01:35:39实例271 让窗体的标题栏不响应鼠标双击事件 实例272 无标题对话框的拖动方法 实例273 灰度最大化与最小化关闭按钮 6.1 对话框的资源共享 实例274 支持多国语言切换的应用程序 实例275 如何实现窗体继承 实例... -
Visual C++开发实战1200例(第1卷).(清华出版.刘锐宁.梁水.李伟明).part2
2016-06-16 01:38:19实例271 让窗体的标题栏不响应鼠标双击事件 实例272 无标题对话框的拖动方法 实例273 灰度最大化与最小化关闭按钮 6.1 对话框的资源共享 实例274 支持多国语言切换的应用程序 实例275 如何实现窗体继承 实例... -
asp.net知识库
2015-06-18 08:45:45鼠标放在一个连接上,会显示图片(类似tooltip) 使用microsoft.web.ui.webcontrols的TabStrip与IFame组件,达到页的切换效果 HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署... -
电子表格Excel使用技巧163种使用技巧大全
2019-03-16 10:41:3899. 使用自动填充快速复制公式和格式 55 100. 为单元格添加批注 56 101. 数据自动输入 56 102. 在EXCEL中快速计算一个人的年龄 57 103. 快速修改单元格次序 57 104. 将网页上的数据引入到EXCEL表格中 58 一、 图形和... -
Excel使用技巧集锦—163种使用技巧大全(超全).doc
2015-05-10 08:08:0799. 使用自动填充快速复制公式和格式 55 100. 为单元格添加批注 56 101. 数据自动输入 56 102. 在EXCEL中快速计算一个人的年龄 57 103. 快速修改单元格次序 57 104. 将网页上的数据引入到EXCEL表格中 58 一、 图形和... -
Excel技巧大全
2015-05-06 07:21:3755. 使用自动填充快速复制公式和格式 28 56. 为单元格添加批注 28 57. 数据自动输入 28 58. 在Excel中快速计算一个人的年龄 28 59. 快速修改单元格次序 29 60. 将网页上的数据引入到Excel表格中 29 三、 图形和图表... -
ASP.NET开发实战1200例(第1卷).part2
2016-06-11 20:12:37实例071 如何将字节单位B转换成GB、MB 和KB 108 实例072 身份证号从15位升到18位算法 109 第3章 面向对象编程思想 111 3.1 面向对象家族核心——类与类成员 112 实例073 面向对象编程核心——类、对象和引用 112 ... -
ASP.NET开发实战1200例(第1卷).part1
2016-06-11 20:07:19实例071 如何将字节单位B转换成GB、MB 和KB 108 实例072 身份证号从15位升到18位算法 109 第3章 面向对象编程思想 111 3.1 面向对象家族核心——类与类成员 112 实例073 面向对象编程核心——类、对象和引用 112 ... -
ASP.NET开发实战1200例(第1卷).part3
2016-06-11 20:19:00实例071 如何将字节单位B转换成GB、MB 和KB 108 实例072 身份证号从15位升到18位算法 109 第3章 面向对象编程思想 111 3.1 面向对象家族核心——类与类成员 112 实例073 面向对象编程核心——类、对象和引用 112 ... -
Excel使用技巧大全(超全).doc
2011-07-19 19:13:4055. 使用自动填充快速复制公式和格式 28 56. 为单元格添加批注 28 57. 数据自动输入 28 58. 在EXCEL中快速计算一个人的年龄 28 59. 快速修改单元格次序 29 60. 将网页上的数据引入到EXCEL表格中 29 三、 图形和图表...