1

Mac アプリケーション用に、Java から Objective C に移行しています。画面共有アプリです。

分析すると、Objective C を使用して作成されたイメージのサイズは、Java を使用して作成されたイメージよりも大きいことがわかりました。デスクトップおよびその他の画像ウィンドウには JPEG を使用し、ブラウザー/エクスプローラー ウィンドウには 8 ビット PNG を使用する予定です。どちらの形式でも、Java の方が優れています (つまり、画像サイズが小さい)。

例: 圧縮率 0.6 の JPEG 画像を作成すると、Java を使用して作成した画像のサイズは 103KB になります。同じイメージを、Objective C を使用して作成すると、201KB になります。

Objective C を使用して作成された画像が Java を使用して作成された画像と同じかそれ以下になるように画像サイズを最適化する方法はありますか?

Objective C コードを使用

NSSize imageSize = [image size]; [image lockFocus]; NSRect imageRect =
NSMakeRect(0, 0, imageSize.width, imageSize.height); NSBitmapImageRep*
myBitmapImageRep = [[NSBitmapImageRep alloc]
initWithFocusedViewRect:imageRect]; [image unlockFocus]; NSDictionary*
options = [NSDictionary dictionaryWithObjectsAndKeys:
                                 [NSNumber numberWithDouble:imageCompression], NSImageCompressionFactor,
                                 [NSNumber numberWithBool:NO], NSImageProgressive,
                                 nil]; NSData* imageData = [myBitmapImageRep representationUsingType:fileType
properties:options];
4

1 に答える 1

0

両方の環境で圧縮係数 (別名品質係数) のスケールが同じですか? たとえば、UIImageJPEGRepresentation(iOS API) のcompressionQualityパラメータは0.75の品質係数を与えます93

私があなただったら、最初に両方の画像で品質係数が同じであることを確認します。たとえば、ImageMagick を使用します。

identify -format "%Q" myimage.jpg

両方の画像で品質係数が同じである場合は、どの JPEG エンコーディング オプションが異なるかを確認する必要があります。ここでも ImageMagickidentifyが役に立ちます。

于 2013-02-07T13:45:35.353 に答える