十二月 19th, 2011
本译文原文地址:
http://www.aviyehuda.com/2010/03/easyimage-a-third-party-jar-for-image-functionalities-and-affects/
EasyImage 可以进行所有的图像基本操作——转换,剪裁,缩放,旋转,翻转等。
把这些效果混合你可以得到一些很酷的效果。
超级简单。
组合操作可以创造一些很酷的结果。
下载链接
下载 EasyImage.jar
下载源码
JavaDoc
猛击这里可以看到 java doc.
操作
- 打开图像
- 保存图像
- 转换图像
- 尺寸缩放
- 图像剪裁
- 将图像转换为黑白
- 旋转图像
- 翻转图像
- 颜色混合
- 用同一个原图的多个实例创建新的图像
- 将2张图像混合在一起
- 强调图像的某个部分
- 图像的仿射变换
例子
组合2张图片
Image image = new Image("c:/pics/p1.jpg");
image.combineWithPicture("c:/pics/p2.jpg");
image.saveAs("c:/pics/p1combinedWithp2.jpg");

强调突出部分
Image image = new Image("c:/pics/p1.jpg");
image.emphasize(250, 200, 2300, 500);
image.saveAs("c:/pics/p1Emphesized.jpg");

仿射变换 + 合并
Image image = new Image("c:/pics/p1.jpg");
Image image2 = new Image("c:/pics/p2.jpg");
image.affineTransform(0.5, 0.0);
image2.affineTransform(-0.5, 0.0);
image2.combineWithPicture(image,Color.black);
image2.saveAs("c:/pics/affineTransformAndCombine.jpg");

颜色混合
Image image = new Image("c:/pics/p1.jpg");
image.addColorToImage(Color.red, 5);
image.saveAs("c:/pics/addColorToImage.jpg");

增加像素点颜色
Image image = new Image("c:/pics/y2.jpg");
image.addPixelColor(111111);
image.resize(40);
image.crop(100, 0, -1, -1);
image.saveAs("c:/pics/addPixelColor.jpg");

图像缩放 + 多个像素点颜色增强
Image image = new Image("c:/pics/p1.jpg");
image.resize(10);
image.multiply(5, 5, 11111);
image.saveAs("c:/pics/multiply+color.jpg");

组合去除背景色的图像
Image image = new Image("c:/pics/heart.gif");
image.multiply(20, 20);
Image image2 = new Image("c:/pics/p6.jpg");
image2.crop(400, 0, -1, -1);
image2.combineWithPicture(image,3,Color.white);
image2.saveAs("c:/pics/combineWithPictureWithoutBackground.jpg");

局部强调的小技巧
Image image = new Image("c:/pics/p1.jpg");
int width = image.getWidth();
int height = image.getHeight();
for(int i=0,c=0;i

十二月 18th, 2011
原文地址 http://www.aviyehuda.com/2011/06/android-quick-tip-use-system-arraycopy/
众所周知,使用JNI的方法System.arraycopy()是一种有效数组拷贝的方法,因为它采用native的方式去调用内存,但是这是否同样适用于Android平台呢?如果是这样,那么到底是更有效到什么程度呢?
为了回答这个问题,我做了一个简单的测试运行在PC机和android的activity里面。
下面是PC上的测试代码:
private static final int SIZE_OF_ARRAY = 10000000;
private static long time;
public static void main(String[] args) {
Integer [] sourceArray = new Integer[SIZE_OF_ARRAY];
Integer [] destinationArray = new Integer[SIZE_OF_ARRAY];
fillArray(sourceArray);
startBenchmark();
naiveCopy(sourceArray,destinationArray);
stopBenchmark();
startBenchmark();
System.arraycopy(sourceArray, 0, destinationArray, 0,
sourceArray.length);
stopBenchmark();
}
private static void naiveCopy(Integer [] src, Integer [] dst) {
for (int i = 0; i < src.length; i++) {
dst[i]=src[i];
}
}
private static void fillArray(Integer [] src) {
for (int i = 0; i < src.length; i++) {
src[i]=i;
}
}
private static void startBenchmark() {
time = System.currentTimeMillis();
}
private static void stopBenchmark() {
time = System.currentTimeMillis() - time;
System.out.println( "time="+time);
}
PC机测试结果如下:(java 7, 8GB 内存, CPU intel i5)
Naive algorithm – 14 ms
System.arraycopy(); – 6 ms.
Arraycopy 快了一半的时间。
同样的在android上面测试,代码如下:
public class ArrayCopyTestActivity extends Activity {
private static final int SIZE_OF_ARRAY = 1000000;
private long time;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Integer [] sourceArray = new Integer[SIZE_OF_ARRAY];
Integer [] dst = new Integer[SIZE_OF_ARRAY];
fillArray(sourceArray);
startBenchmark();
naiveCopy(sourceArray,dst);
stopBenchmark();
startBenchmark();
System.arraycopy(sourceArray, 0, dst, 0, sourceArray.length);
stopBenchmark();
}
private void naiveCopy(Integer [] src, Integer [] dst) {
for (int i = 0; i < src.length; i++) {
dst[i]=src[i];
}
}
private void fillArray(Integer [] src) {
for (int i = 0; i < src.length; i++) {
src[i]=i;
}
}
private void startBenchmark() {
time = System.currentTimeMillis();
}
private void stopBenchmark() {
time = System.currentTimeMillis() - time;
Log.d("array copy test", "time="+time);
}
}
*注意,我将数组的长度从1000W缩短至100W ,这是因为android平台上允许的内存有限。
在nexus 1 上得出的运行结果为:
Naive algorithm – 182 ms
System.arraycopy(); – 12 ms.
这个事实意味着在android上使用System.arraycopy()要比普通的数组拷贝快的更多。
总的来说,尽量在android上面去使用System.arraycopy()来代替数组复制吧。
十二月 5th, 2011
这篇是从我的搜狐博客搬家过来的,下面还有陆续的文章
简介
The Sage of Ryzom是一款在2004年9月发布的MMOPRG,最开始发布在欧洲和北美,目前已经被本地化为3种不同的语言。它由Nevrax在2000年开发, 在2006年末时由Gameforge接管。
Ryzom由Nevrax团队独立开发,包括了Nevrax Library (NeL),该库基于GPL协议发布。在NeL之上,开发出了一项服务器技术用来处理高度仿真的虚拟世界。这篇文章关注于所开发出的如何平滑地移动实体和 将动态属性传播给所有相同区域内其他客户端的网络技术。
Daniel Miller,Nevrax和Gameforge France的CTO,感谢他所做出的巨大贡献和对这篇文章的最终审查。
Read the rest of this entry
十一月 30th, 2011
翻译自http://blog.publicobject.com/
大多数有网络连接的Android应用会使用HTTP协议发送和接收数据。Android包含两种Http客户端类, HttpURLConnection和Apache HttpClient。这两者都支持HTTPS,streaming 上传与下载,配置超时时间,IPv6, 以及连接池。
Read the rest of this entry
十一月 16th, 2011
虽然这篇文章已经有了几个译本,不过参详过发现其中很多字句并非原文本意,下面是我自己翻译的版本,若有不妥之处,请指正。
编写高效的android代码

无论怎样,基于android的设备也是嵌入式设备。现代的手持设备,与其说是电话,更像一台拿在手中的电脑。但是,即使是“最快”的手持设备,其性能也达不到一台普通的台式电脑。
这就是为什么我们在书写Android应用程序的时候要格外关注效率。这些设备并没有那么快,并且受电池电量的制约。这意味着,设备没有更多的能力,我们必须把程序写的尽量有效。
本文讨论了很多能让开发者使他们的程序运行更有效的方法,遵照这些方法,你可以使你的程序发挥最大的效力。 Read the rest of this entry
十一月 16th, 2011
北京时间11月15日消息,据国外媒体报道,谷歌Google正式对开发者宣布,Android 4.0(Ice Cream Sandwich)源代码发布,开发者可以到Android开放源码库(AOSP)中下载 !此次开放的源代码版本为4.0.1,也是第一款Android 4.0设备Galaxy Nexus所使用的版本,同时公开的还有Android Honeycomb版本的代码。

是的是的 终于等到了 下面是我从git打包的4.0sdk源码~只有不到8M的大小~
Read the rest of this entry
十月 17th, 2011
今天不小心继承一个类型的时候把其中的一个protected的方法写成了public,开始的时候没有发现,后来突然想起来这个方法应该是不提供给访问者的,那么检查竟然发现java编译器允许了这样的行为。
想一想,这样的设计还算蛮合理的。
Read the rest of this entry
十月 16th, 2011
这就测一下行不行吧
应该是可以用的
不过看起来会把题目中的英文的字符之间也加上-这个问题得处理一下
搞清楚了再改改试试吧
十月 16th, 2011
我把固定地址的postname一项去掉好像应该就可以用了 不过这个说不通啊
试试看
倒是确实由于postname导致的 不过问题在于题目中的中文并没有被转换为%xxxx这个格式 而是直接显示为中文了 看来错误就是这样发生的吧
十月 14th, 2011
哈哈 想做一次标题党来的
俺终于有个不是博客站点提供的博客了 虽然这么简陋 我也对wordpress一无所知
OK 不扯了 还要配置一下博客的环境