doudiewen9435 2017-04-08 01:57
浏览 37

win32std res_set()在图像资源编辑时不起作用,但内容是正确的

I have a code, which is gets the icon images info:

$icon_data = file_get_contents ($_ARG['icon']);

$icons = [];
$offset = 4;
$icon_count = unpack ('S', substr ($icon_data, $offset, 2));
$icon_count = $icon_count[1];
$offset += 2;

for ($i = 0; $i < $icon_count; ++$i) {

    $icon = [];

    $val = unpack ('C', substr ($icon_data, $offset, 1));
    $icon['width'] = $val[1];
    $offset += 1;

    $val = unpack ('C', substr ($icon_data, $offset, 1));
    $icon['height'] = $val[1];
    $offset += 1;

    $val = unpack ('C', substr ($icon_data, $offset, 1));
    $icon['colors'] = $val[1];
    $offset += 2;

    $val = unpack ('S', substr ($icon_data, $offset, 2));
    $icon['planes'] = $val[1];
    $offset += 2;

    $val = unpack ('S', substr ($icon_data, $offset, 2));
    $icon['bitcount'] = $val[1];
    $offset += 2;

    $val = unpack ('L', substr ($icon_data, $offset, 4));
    $icon['size'] = $val[1];
    $offset += 4;

    $val = unpack ('L', substr ($icon_data, $offset, 4));
    $icon['offset'] = $val[1];
    $offset += 4;

    $icon['data'] = substr ($icon_data, $icon['offset'], $icon['size']);

    $icons[] = $icon;

}

$icon_group  = pack ('S', 0);
$icon_group .= pack ('S', 1);
$icon_group .= pack ('S', $icon_count);

for ($i = 0; $i < $icon_count; ++$i) {

    $icon_group .= pack ('C', $icons[$i]['width']);
    $icon_group .= pack ('C', $icons[$i]['height']);
    $icon_group .= pack ('C', $icons[$i]['colors']);
    $icon_group .= pack ('C', 0); // RESERVED
    $icon_group .= pack ('S', $icons[$i]['planes']);
    $icon_group .= pack ('S', $icons[$i]['bitcount']);
    $icon_group .= pack ('L', $icons[$i]['size']);
    $icon_group .= pack ('S', ($i + 1));

}

It's working like a sharm. For example, it's output of $icons variable looks like

Array
(
    [0] => Array
        (
            [width] => 48
            [height] => 48
            [colors] => 16
            [planes] => 1
            [bitcount] => 4
            [size] => 1640
            [offset] => 214
            [data] => (   0   `                            яяя   Ђ  Ђ   ЂЂ Ђ   Ђ ЂЂЂ ААА ЂЂЂ   я  я   яя я   я яяя     яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяу“›“93?яяяяяяяяяяхяяяяя39ёwp·ё“?яяяяяяяяяц€яяяу“·{ё»‹{y3яяяяяяяяяшV†яс9·x»‹·ё··№?яяяяяяяя4e8F7{»‹ё»{»{s“яяяяяяяяBSd€»ё»{····»3яяяяяяяф$C‡»‹‹{ё{»{{‰їяяяяяяятAo9ё·ё·»{·····і?яяяяяяяяфх7{»‹»‡·»{{s?яяяяяяяяяу0»x»w»{···°{џяяяяяяяяяс‹»‹»{·{{{ °·?яяяяяяяяя;{ё····{ё°·°?яяяяяяяяуђ·»{{{{№»·°  џяяяяяяяяс;{°{і37›p  °?яяяяяяяяуp{p · іс»   ?яяяяяяящp·  °1яу7  ?яяяяO/я$ы  °?яс°  џяяяOяфяя     яуp°° ?яяцтхтя7     і?т›   џяяяхтO/B     {“90°°° s?яяяяЏB   ° »і{  ±яяяяяяo?O8   { °°» °°°“яяяяяяцшшы     ° °°?яяяяяOя_oSp  »  ·іяяяяясяяVуp   °°°°»1яяяяятфяяacђ  °°» ‹яяяяяф%тф!FV3  °°°°°1яяяяят_яЏO(Џѓp° ° °·sяяяяц_$4уфhS7{°» »џaяяяяяшCOoRO4hЃ° °» {s/фяяяяяя„4х/A$€9 °pp·3яЏяяяяяяяe$6шцфѓѓ8і№2qфуBяяяяяяяцVAd4oЏф(€€XGvсO„яяяяяяяяшCHшBR_O‡~wO$Џяяяяяяяяяh44Џ„%$я€xяяЏяяяяяяяяяяHFR„Ce$!яфoЏяяяяяяяяяяя…hц$RVRCCHOЏяяяяяяяяяяятHefX%ad4„шoяяяяяяяяяяяяя€„ehH4cBЏ„ЏяяяяяяяяяяяяяяH†„€F„€HшЏяяяяяяяяяяяяяяя€€d€HF„†_яяяяяяяяяяяяяяяяц€„†…hXoяяяяяяяяяяяяяяяяяш€€hFgЏяяяяяяяяяяяяяяяяяяяцw€яяяяяяяяяяяяяяяяяяяяяя†_яяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяь?ш яяяшА яьяшЂ яшяр   яшяр   яряр   яряа   яряА   яаяА   яАяЂ   яАяЂ   яЂя    яЂю    я ь    ю ш    ь ш    ш р    ш а    р Ђ    а Ђ    Ђ А    Ђ р    А ь    р ш    ь р    ш а    р А    а Ђ    А Ђ    Ђ Ђ    Ђ А    Ђ а    А ш    а ю    ш я    ю яА   я яр   яАяь   яряя   яьяяА  яяяяр  яяяяь  яяяяя  яяяяяа ?яяяяяь ?яяяяяяАяяяяяяяяяя
        )

    [1] => Array
        (
            [width] => 32
            [height] => 32
            [colors] => 16
            [planes] => 1
            [bitcount] => 4
            [size] => 744
            [offset] => 1854
            [data] => (       @                            яяяя  Ђ  Ђ   ЂЂ Ђ  ЂЂ ЂЂЂЂ ЂААААЂЂЂЂ  я  я   яя я  яя яяяя я    яяяяяяяяяяяяяяяяяяяяяяяяя›“—3џяяяяяяяЏяя№8{{ѓ?яяяяяя€aя—{ё»‡·“яяяяяхцVЃ{»‹·»{sяяяяятRa0ё··»{{і?яяяяяфсx»‹{··»?яяяяяя»{»{{{p»џяяяяяя;{··°·» °?яяяяяу7·»{№іp°яяяяясp°3у»  ?яяяяяуpс   ?яя%яOу   яш ° џяяO$ч   ; ?яят_$   {·°°°     ?яяяшх(  °sяяяяятCp ° °·1яяяяфсa  °°°°{яяяях/$6[ °їяяяшяABX(° ёяяяяe$?O†— °°ёЏяяяяяцRFсc‹syѓяRяяяяяшAad4%€†яoяяяяяя†44штH‡BB_яяяяяяяHFЏ„RO%хoяяяяяяяя…hш%4ЏЏяяяяяяяятH†HF‚HЏяяяяяяяяяя€†…e$ЏяяяяяяяяяяяH†XhЏяяяяяяяяяяяяшhwOяяяяяяяяяяяяяяOяяяяяяяяяяяяяяяяяяяяяяяя‡АяЃ я  я  ю  ь  ь  ш  р  р  а  А  Ђ  Ђ  а  а  А  Ђ  Ђ  Ђ  А  а  ш  ю  яЂ яА яш яю яяЂяяряяяя
        )

    [2] => Array
        (
            [width] => 24
            [height] => 24
            [colors] => 16
            [planes] => 1
            [bitcount] => 4
            [size] => 488
            [offset] => 2598
            [data] => (      0                            яяяя  Ђ  Ђ   ЂЂ Ђ  ЂЂ ЂЂЂЂ ЂААААЂЂЂЂ  я  я   яя я  яя яяяя я    яяяяяяу“—‹9яяяяфЏя—·ё·sџяяяCfЃ‹ё»{ёіяяяф7{{{·»‰яяяяу‹ё»»{іяяяях·»w··°яяяяы{·»›{ ёяяяя°1° яяяс0°я‹ яфтOЂ  qс °        ятAя°  і; яя$ЏЂ  °°·3яяяф0 °°яхя%'  qяфя$Sp°°°·?яя†oa‹ЃяяяяHхцш77€яOяяяц‚_ЏB€v/яяяяхhFoЏяяяяяш…acCAoяяяяяяц†„ef_яяяяяяяшh†Xoяяяяяяяяхh€Џяяяяяяяяяяцяяь8 ь ьш  ьш  шр  шр  ра  рА  аЂ  А   Ђ    Ђ   Ђ Ђ  Ђ      Ђ  А Ђр Аь ря ьяАяяряяюя
        )

)

if icon file have three images for example. I tried to use it for resource edit via win32std res_get () function, but it do nothing, but [data] section content seems to be correct (I've compared it manually)

Here's my code which made this:

res_set ($exe_file, 'RT_GROUP_ICON', 'MAINICON', $icon_group);

for ($i = 0; $i < $icon_count; ++$i)
res_set ($exe_file, 'RT_ICON', '#'.($i + 1), $icons[$i]['data']);

and I also put this content hardcoded, like

res_set ($exe_file, 'RT_ICON', '#1', substr ($image_data, 214, 1640));

but there's no result.

Any help with this problem solve is appreciated.

Thanks a lot!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 求lingo代码和思路
    • ¥15 公交车和无人机协同运输
    • ¥15 stm32代码移植没反应
    • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
    • ¥100 连续两帧图像高速减法
    • ¥15 如何绘制动力学系统的相图
    • ¥15 对接wps接口实现获取元数据
    • ¥20 给自己本科IT专业毕业的妹m找个实习工作
    • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
    • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)