【问题标题】:titanium image factory quality钛影像厂品质
【发布时间】:2014-04-25 06:47:24
【问题描述】:

我的这段代码在 iOS 上完美运行,但在 android 平台上崩溃。

var quality = Ti.Platform.osname=="android"?80:ImageFactory.QUALITY_LOW;
Ti.API.info(quality);
var resizedImage = ImageFactory.imageAsResized(imageView, {height : h,width:w, quality: quality});

第 2 行代码显示 80,但出现错误提示

[INFO] :   80
[WARN] :   W/System.err: java.lang.IllegalArgumentException: quality must be 0..100
[WARN] :   W/System.err:    at android.graphics.Bitmap.compress(Bitmap.java:873)
[WARN] :   W/System.err:    at ti.imagefactory.ImageFactoryModule.imageTransform(ImageFactoryModule.java:137)
[WARN] :   W/System.err:    at ti.imagefactory.ImageFactoryModule.imageAsResized(ImageFactoryModule.java:181)
[WARN] :   W/System.err:    at org.appcelerator.kroll.runtime.v8.V8Function.nativeInvoke(Native Method)
[WARN] :   W/System.err:    at org.appcelerator.kroll.runtime.v8.V8Function.callSync(V8Function.java:57)
[WARN] :   W/System.err:    at org.appcelerator.kroll.runtime.v8.V8Function.call(V8Function.java:43)
[WARN] :   W/System.err:    at org.appcelerator.kroll.runtime.v8.V8Function$1.run(V8Function.java:70)
[WARN] :   W/System.err:    at android.os.Handler.handleCallback(Handler.java:725)
[WARN] :   W/System.err:    at android.os.Handler.dispatchMessage(Handler.java:92)
[WARN] :   W/System.err:    at android.os.Looper.loop(Looper.java:137)
[WARN] :   W/System.err:    at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112)
[ERROR] :  TiExceptionHandler: (main) [454,43722] ----- Titanium Javascript Runtime Error -----
[ERROR] :  TiExceptionHandler: (main) [0,43722] - In views/share.js:58,34
[ERROR] :  TiExceptionHandler: (main) [0,43722] - Message: Uncaught Error: quality must be 0..100
[ERROR] :  TiExceptionHandler: (main) [0,43722] - Source:
[ERROR] :  V8Exception: Exception occurred at views/share.js:58: Uncaught Error: quality must be 0..100

怎么了?

【问题讨论】:

    标签: titanium titanium-mobile appcelerator titanium-modules


    【解决方案1】:

    试试这个

    if (Ti.Platform.osname=="android"){
        // For android
        resizedImage = ImageFactory.imageAsResized(imageView, {height : h,width:w});
    }else{
        // For iOS
        resizedImage = ImageFactory.imageAsResized(imageView, {height : h,width:w, quality: quality});
    }
    

    更多请参考androidiOS的app.js

    【讨论】:

    • 当然可以!由于服务器匹配要求,我想降低图像质量,但我想这是不可能的......现在我看到我已经“.compress(blob,0.5)”图像blob,所以我不需要设置该图像视图的质量。不过仍然是错误
    【解决方案2】:

    您可以使用图像大小调整。

    [TiBlob] imageAsResized([int] width, [int] height)
    

    例子:-

    var blob = myimage.toBlob();
    var smallBlob = blob.imageAsResized(80, 80);
    

    还有refer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      相关资源
      最近更新 更多