フレームを表示

L_IntelligentDownScaleBitmap

フレームを表示

#include "l_bitmap.h"

L_LTIMGSFX_API L_INT L_IntelligentDownScaleBitmappBitmap、pMaskBitmap、crRemoveObjectColor、crPreserveObjectColor、nNewWidth、nNewHeight、nDownScalingOrder、uFlags

pBITMAPHANDLE pBitmap;

/* ビットマップハンドルへのポインター*/

pBITMAPHANDLE pMaskBitmap;

/* マスクビットマップハンドルへのポインター*/

COLORREF crRemoveObjectColor;

/* 削除された領域のカラー*/

COLORREF crPreserveObjectColor;

/* 保たれた領域のカラー*/

L_INT nNewWidth;

/* 新しい幅*/

L_INT nNewHeight;

/* 新しい高さ*/

L_INT nDownScalingOrder;

/* ダウンスケール動作*/

L_UINT32 uFlags;

/* 将来のために予約されています*/

自動的に重要な機能を保っている間、イメージサイズを減らします。また、それは、imageの自然な見た目に影響を及ぼすことなくユーザーによって選択される特定のオブジェクトを削除することができるか、保つことができます。

この機能は、バージョン16以上で利用できます。

パラメーター

説明

pBitmap

エフェクトを適用するビットマップを参照文に引用しているビットマップハンドルへのポインター。

pMaskBitmap

マスクビットマップを参照文に引用するビットマップハンドルへのポインター。マスクビットマップは、オリジナルのimageと同じimageであるが、ダウンスケール操作の間、削除されるか、保たれる必要がある特定の領域の上で、カラーを使います。マスクビットマップがないならば、NULLを渡します。ビットマップにファンクションリターンERROR_INV_PARAMETERを持っていることを避けるpBitmapと同じサイズを渡します

crRemoveObjectColor

削除されるマスクビットマップで領域のカラーを指定するCOLORREF値。pBitmapimageで使われる色とは様々であるのを好まれます。任意の色値を渡したくないならば、INTELLIGENTRESCALE_NOREMOVECOLORを渡します。

crPreserveObjectColor

保たれるマスクビットマップで領域のカラーを指定するCOLORREF値。crRemoveObjectColorで指定されるカラーとpBitmapimageで使われる色とは様々であるのを好まれます。色値を渡したくないならば、INTELLIGENTRESCALE_NOREMOVECOLORを渡します。

nNewWidth

ピクセル単位で新しい幅。設定可能な値は、1~(画像の幅-1)です。

nNewHeight

ピクセル単位で新しい高さ。設定可能な値は、1~(画像の高さ-1)です。

nDownScalingOrder

ダウンスケール動作。設定可能な値は、以下の通りです。

 

意味

 

INTELLIGENTRESCALE_VERTHORZ

まず、画像の幅を、次に高さをダウンスケールします。

 

INTELLIGENTRESCALE_HORZVERT

まず、画像の高さを、次に幅をダウンスケールします。

uFlags

今後使うため確保されます。ゼロでなければなりません。

戻り値

SUCCESS

関数は成功しました。

<1

エラーが発生しました。リターンコードを参照してください

コメント

時々、暗い領域が「重要でない」と考えられるため、暗い領域はダウンスケールの間、影響を受けます。暗いオブジェクトがダウンスケールの間、影響を受けるのを防ぐために、imageを否定します、ダウンスケールを適用します、そして、オリジナルのimageの色を取得するために、もう一度imageを否定します。あるいは、暗いオブジェクトの上でマスクを適用します。

知的なダウンスケールには、イメージがあまりにコンデンスである、または、コンテンツレイアウトがダウンスケールが重要なパーツを害することなく正しく実行されるのを防ぐ限界があります。

マスクを用いて実行されるダウンスケールは、幅寸法の上でだけされます。高さ寸法の上でマスクを用いてダウンスケールを行うために、imageを回転させます、幅寸法をダウンスケールを行います、そして、もう一度imageを回転させます。

削除されている領域のためのマスクカラーは、imageで色とは異ならなければなりません。複数の「距離」オブジェクトが覆い隠されるならば、すべては同じマスクカラーを持っていなければなりません。

「領域」領域のマスクカラーは、imageの色とは様々でなければならなくて、距離領域カラーとは異ならなければなりません。複数の「領域」オブジェクトが覆い隠されるならば、すべては同じマスクカラーを持っていなければなりません。

ダウンスケールの量を距離領域のサイズと等しくするために、新しい幅をimage幅と等しく設定します。これは、領域を保つために適用しないで、知的なアップスケーリングに適用しません。

新しいサイズを設定しても、完全に削除領域を削除できない場合があります。この場合、(失敗した)ダウンスケールを行われたimageの幅より少ないオリジナルのimageに、新しい幅を渡します。たとえばダウンスケールした画像の幅が300ピクセルであっても、ダウンスケール後に削除領域に数行残っている場合、幅を290ピクセルにリセットしてダウンスケールをやり直します。

マスクが領域領域、しかし、距離領域をでなく持っているならば、nNewWidthを指定しなければなりません。

最善結果のために、距離領域の上に渡して、上からimageの下までマスクを描画します。距離領域だけで実行されるダウンスケールを強制するのに十分広いマスクを作ります。

この関数は、12または16ビットグレースケールまたは48または64ビットカラーイメージをサポートしません。imageが12または16ビットグレースケールまたは48または64ビットカラーであるならば、関数はエラーを返しません。

この関数は、符合付きデータイメージをサポートしません。符合付きデータイメージがこの関数に渡されるならば、それはエラーコードERROR_SIGNED_DATA_NOT_SUPPORTEDを返します。

この関数は、32ビットグレースケールイメージをサポートしません。32ビットグレースケールimageがこの関数に渡されるならば、それはエラーコードERROR_GRAY32_UNSUPPORTEDを返します。

必須のDLLとライブラリ

LTIMGSFX

ツールキットバージョンに基づいた正確なDLLとライブラリのリストについては、「アプリケーションとともに配布するファイル」を参照してください

プラットホーム

Win32 x 64

参照

関数:

L_SizeBitmap, L_SizeBitmapInterpolate, L_IntelligentUpScaleBitmap

トピック:

ラスター画像は機能します:インテリジェントなリスケール

 

概要:インテリジェントなリスケール

 

インテリジェントリスケールデモの使用

サンプル

#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName


L_LTIMGTEX_API L_INT IntelligentDownScaleExample(L_VOID)
{
   L_INT nRet;
   BITMAPHANDLE LeadBitmap;   // Bitmap handle to hold the loaded image.

   nRet=L_LoadBitmap(MAKE_IMAGE_PATH(TEXT("SAMPLE3.CMP")), &LeadBitmap,sizeof(BITMAPHANDLE), 0, ORDER_RGB, NULL, NULL);
   if(nRet !=SUCCESS)
      return nRet;

   nRet=L_IntelligentDownScaleBitmap(&LeadBitmap, NULL, (COLORREF)INTELLIGENTRESCALE_NOREMOVECOLOR, (COLORREF)INTELLIGENTRESCALE_NOPRESERVECOLOR,
      500, LeadBitmap.Height, INTELLIGENTRESCALE_VERTHORZ, 0);

   if(nRet !=SUCCESS)
      return nRet;

   nRet = L_SaveBitmap(MAKE_IMAGE_PATH(TEXT("Result.BMP")), &LeadBitmap, FILE_BMP, 24, 0, NULL);

   if(nRet !=SUCCESS)
      return nRet;

   L_FreeBitmap(&LeadBitmap);

   return SUCCESS;
}