EasyImage–第三方图像处理与效果库(译文)

5 Comments »

本译文原文地址:
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


Android 快速提示: 使用 System.arraycopy()(译文)

No Comments »

原文地址 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()来代替数组复制吧。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。


带宽限制下的视觉实体属性传播(译文)

3 Comments »

这篇是从我的搜狐博客搬家过来的,下面还有陆续的文章

简介

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


在Android上使用Http客户端的选择(译文)

No Comments »

翻译自http://blog.publicobject.com/

       大多数有网络连接的Android应用会使用HTTP协议发送和接收数据。Android包含两种Http客户端类, HttpURLConnection和Apache HttpClient。这两者都支持HTTPS,streaming 上传与下载,配置超时时间,IPv6, 以及连接池。

Read the rest of this entry


编写高效的android代码(译文)

No Comments »
虽然这篇文章已经有了几个译本,不过参详过发现其中很多字句并非原文本意,下面是我自己翻译的版本,若有不妥之处,请指正。

编写高效的android代码

无论怎样,基于android的设备也是嵌入式设备。现代的手持设备,与其说是电话,更像一台拿在手中的电脑。但是,即使是“最快”的手持设备,其性能也达不到一台普通的台式电脑。

这就是为什么我们在书写Android应用程序的时候要格外关注效率。这些设备并没有那么快,并且受电池电量的制约。这意味着,设备没有更多的能力,我们必须把程序写的尽量有效。

本文讨论了很多能让开发者使他们的程序运行更有效的方法,遵照这些方法,你可以使你的程序发挥最大的效力。 Read the rest of this entry


android 4.0 sdk 源码放出 本人亲自打包这里可以下载

No Comments »

北京时间11月15日消息,据国外媒体报道,谷歌Google正式对开发者宣布,Android 4.0(Ice Cream Sandwich)源代码发布,开发者可以到Android开放源码库(AOSP)中下载 !此次开放的源代码版本为4.0.1,也是第一款Android 4.0设备Galaxy Nexus所使用的版本,同时公开的还有Android Honeycomb版本的代码。

ice cream sandwich
是的是的 终于等到了 下面是我从git打包的4.0sdk源码~只有不到8M的大小~

Read the rest of this entry


子类继承父类后重载protected方法提升访问权限为public

No Comments »

今天不小心继承一个类型的时候把其中的一个protected的方法写成了public,开始的时候没有发现,后来突然想起来这个方法应该是不提供给访问者的,那么检查竟然发现java编译器允许了这样的行为。
想一想,这样的设计还算蛮合理的。
Read the rest of this entry


尝试修改了一下william写的中文转拼音插件把原来的拼音中间加上了分隔符

No Comments »

这就测一下行不行吧

应该是可以用的

不过看起来会把题目中的英文的字符之间也加上-这个问题得处理一下

搞清楚了再改改试试吧


看来果然是由于postname是中文后导致的404错误

No Comments »

我把固定地址的postname一项去掉好像应该就可以用了 不过这个说不通啊

试试看

倒是确实由于postname导致的 不过问题在于题目中的中文并没有被转换为%xxxx这个格式 而是直接显示为中文了 看来错误就是这样发生的吧


庆祝一下我的wordpress博客终于建成了

1 Comment »

哈哈 想做一次标题党来的

俺终于有个不是博客站点提供的博客了 虽然这么简陋 我也对wordpress一无所知

OK 不扯了 还要配置一下博客的环境