小编ali*_*air的帖子

为什么java 1.7中的字体与1.6不同?

我一直在用Java构建开发环境(作为一个小型研究项目).作为其中的一部分,我构建了一个自定义文本组件,使用Graphics2d绘制文本本身,如下所示:

g2.drawString("some text", 100, 100);
Run Code Online (Sandbox Code Playgroud)

使用1.6(我假设这是由Apple提供),所有东西都在Eclipse中很好地开发,直到我打包并运行java 1.7(由Oracle提供).显然在开发环境中字体非常重要,所以我很不高兴看到1.7中的结果.

在此输入图像描述

我尝试过包装自定义字体,但它们都显得粗糙和腐蚀.上面的比较并不算太差,但有些字体(如摩纳哥)看起来很糟糕.

我猜这与Apple如何将事物挂钩到Quartz有关.但有没有办法改善事物,所以它在其他系统上看起来并不可怕?有没有人有这个策略?

更新:这是摩纳哥的比较: 在此输入图像描述

以及摩纳哥C(在paintComponent中)的缩放比较(左边是1.7,右边是1.6).请注意,我正在使用以下方法从本地ttf文件加载字体:

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("monaco.ttf");
Font customFont = null;
try
{
customFont = Font.createFont(Font.TRUETYPE_FONT, is);
customFont = customFont.deriveFont(16.0f).deriveFont(Font.BOLD);
                    is.close();
                    ge.registerFont(customFont);
                } catch (FontFormatException e1)
                {
                    e1.printStackTrace();
                } catch (IOException e1)
                {
                    e1.printStackTrace();
                }
this.setFont(customFont);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

另请注意,使用以下命令打开抗锯齿:

 g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
                    RenderingHints.VALUE_ANTIALIAS_ON);
Run Code Online (Sandbox Code Playgroud)

java fonts java-7

17
推荐指数
1
解决办法
1854
查看次数

JVM Profiler与Mac OS X活动监视器中的内存使用情况

我一直在分析我的java应用程序,并且对我报告的应用程序的内存使用情况感到困惑(通过eclipse运行).它总是与分析器报告的内存使用量大不相同,并且实际上甚至不匹配.

应用程序的JVM标志是:

-Xmx1G 
-Xms1G 	
-XX:MaxMetaspaceSize=256M
-XX:CompressedClassSpaceSize=256M
Run Code Online (Sandbox Code Playgroud)

此图像显示进程"java"的报告内存为1.67GB.当我双击该过程时,细分显示1.15GB的"实际内存大小"和各种其他内存指标.

报告了Mac OS X内存使用情况

飞行记录器显示应用程序坚持其1GB堆大小.我进行了测试,表明它也符合其元空间限制.

飞行记录器内存使用情况

我的问题有两个:1)任何想法为什么报告的内存使用在过程(由Mac OS X报告)和分析器之间是如此不同?2)知道为什么活动监视器中显示的内存与进程内存崩溃之间存在差异?

java memory macos memory-leaks memory-management

9
推荐指数
1
解决办法
1463
查看次数

OpenCV nMatToBitmap断言失败

我在使用OpenCV for Android中的一些通用函数时遇到以下错误

12-05 21:08:55.486: E/cv::error()(6658): OpenCV Error: Assertion failed (src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols) in void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean), file /home/oleg/sources/opencv/modules/java/generator/src/cpp/utils.cpp, line 107
12-05 21:08:55.486: E/org.opencv.android.Utils(6658): nMatToBitmap catched cv::Exception: /home/oleg/sources/opencv/modules/java/generator/src/cpp/utils.cpp:107: error: (-215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean)
12-05 21:08:55.486: E/CameraBridge(6658): Mat type: Mat [ 144*192*CV_8UC3, isCont=true, isSubmat=false, nativeObj=0x1024c0, dataAddr=0x44783010 ]
12-05 21:08:55.486: E/CameraBridge(6658): Bitmap type: 384*288
12-05 …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android opencv android-ndk

8
推荐指数
2
解决办法
6639
查看次数

如何在jar中打包opencv + java

我一直在使用Opencv 2.4.5和Java构建一个应用程序,现在想分发应用程序.使用以下内容加载库:

static{ 
        System.loadLibrary("opencv_java245"); 
    }
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.但是,在导出时,从jar运行时它不起作用:

java -jar build1.jar 
Run Code Online (Sandbox Code Playgroud)

opencv_java245.jar文件作为用户库包含在内,并连接了一个本机文件(libopencv_java245.dylib).当运行从Eclipse生成的可执行jar时,我得到下面的UnsatisfiedLinkError,尽管在eclipse中编译/运行正常.

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java245 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at com.drawbridge.Main.<clinit>(Main.java:12)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:266)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Run Code Online (Sandbox Code Playgroud)

有人知道在罐子里打包OpenCV的简单方法吗?

更新:我现在已经筋疲力尽了.我可以将库添加到我的构建路径(而不是使用System.loadLibrary),这可以在eclipse中使用,但不能在jar中打包.我已经尝试了一切.我还检查了我正在尝试加载的动态库的类型 - 它是

Mach-O 64-bit x86_64 dynamically linked shared library
Run Code Online (Sandbox Code Playgroud)

这似乎应该工作正常.我用-D64和-D32来测试并得到两者相同的结果.

java opencv packaging executable-jar

8
推荐指数
1
解决办法
7205
查看次数

有一个令人困惑的git错误消息

得到以下似乎在网上不常见的消息:

fatal: unknown style 'diff' given for 'merge.conflictstyle'
Run Code Online (Sandbox Code Playgroud)

我已经查找了merge.conflictstyle和diff的样式,而diff3似乎是合适的.我不知道我能在哪里/应该改变这一点,但它不允许我推动任何更改,因为分支落后,因为我无法拉动由于上面的消息:(.

git github

1
推荐指数
1
解决办法
1465
查看次数