4

データベースから画像を読み取った後、その画像をJP2(JPEG2000)に変換する必要があります

アップデート:

私はFreeImageを使用して画像をJP2に変換しました

   // Load bitmap           
   FIBITMAP dib = FreeImage.LoadEx(imageName);
// Check success
if (dib.IsNull)
{
    MessageBox.Show("Could not load Sample.jpg", "Error");
    return;
}    

// Convert Bitmap to JPEG2000 and save it on the hard disk
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JP2, dib, "Image.jp2", FREE_IMAGE_SAVE_FLAGS.DEFAULT);

// Unload source bitmap
FreeImage.UnloadEx(ref dib);

今、私はこの画像を高い圧縮レベルで圧縮する必要があります!

4

2 に答える 2

4

私は答えを見つけました

   // Load bitmap           
   FIBITMAP dib = FreeImage.LoadEx(imageName);
    //
    Check success
    if (dib.IsNull)
    {
        MessageBox.Show("Could not load Sample.jpg", "Error");
        return;
    }    

    // Convert Bitmap to JPEG2000 and save it on the hard disk
    FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JP2, dib, "Image.jp2", FREE_IMAGE_SAVE_FLAGS.EXR_PXR24 | FREE_IMAGE_SAVE_FLAGS.EXR_LC);

    // Unload source bitmap
    FreeImage.UnloadEx(ref dib);
于 2012-12-18T17:30:49.443 に答える
0

JP2(およびJ2K)形式のフラグは、単純に削減係数として解釈されます。これはPluginJP2.cppソースからのものです

// if no rate entered, apply a 16:1 rate by default
if(flags == JP2_DEFAULT) {
    parameters.tcp_rates[0] = (float)16;
} else {
    // for now, the flags parameter is only used to specify the rate
    parameters.tcp_rates[0] = (float)(flags & 0x3FF);
}

したがって、実際には最大1023:1の削減率を指定できます。

// Load bitmap           
FIBITMAP dib = FreeImage.LoadEx(imageName);
// Check success
if (dib.IsNull)
{
    MessageBox.Show("Could not load Sample.jpg", "Error");
    return;
}    

// Convert Bitmap to JPEG2000 and save it on the hard disk
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JP2, dib, "Image.jp2", (FREE_IMAGE_SAVE_FLAGS)1023);

// Unload source bitmap
FreeImage.UnloadEx(ref dib);

これにより、非常に小さい非常に低品質のファイルが作成されます。

于 2017-01-20T15:53:27.923 に答える