是否有关于如何读取二进制文件的综合信息?我在 PHP 网站 ( http://www.php.net/manual/en/function.pack.php )上找到了信息,但我很难理解如何处理“typedef struct”和结构使用。
我有一个很长的二进制文件,里面有很多块,每个块都可以用 C 结构来表示。这个 C 结构有各种类似于我在下面提出的“typedef 结构”:
typedef struct
{
unsigned char Day;
unsigned char Month;
unsigned char Year;
} DATE_OF_BIRTH;
#define USER_TYPE 5
DATE_OF_BIRTH Birth[2];\
Run Code Online (Sandbox Code Playgroud)
编辑:
我在下面有一个结构,这是更大结构的一部分
typedef struct FILE_HEADER_tag
{
int Type;
int Version;
unsigned long Model;
unsigned long Number;
int Class;
int TemplateLoaded;
char TemplateName[32];
RTC_TIME_DATE StartTime;
RTC_TIME_DATE CurrentCal;
RTC_TIME_DATE OriginalCal;
TEMPLATE_SETTINGS;
int EndType;
} FILE_HEADER;
typedef struct
{
unsigned char Second;
unsigned char Minute;
unsigned char Hour;
unsigned char Day; …Run Code Online (Sandbox Code Playgroud) 我创建了一个可以调整裁剪框大小的函数。用户输入高度和宽度,单击“设置”即可完成工作。
$('body').on('click', '#cropImageModal .set_box_size', function () {
var width = $(this).parents('.panel-body').find('.width').val();
var height = $(this).parents('.panel-body').find('.height').val();
document.getElementById('imageToCrop').cropper.setCropBoxData({width: parseInt(width), height: parseInt(height)});
});
Run Code Online (Sandbox Code Playgroud)
除非我们遇到一个问题,即由于某种原因执行调整大小时,裁剪框会根据图像的大小按比例缩小。
即我有一个 700x385 的图像,我将框设置为 700x300 并单击“设置”...结果?结果是 510x219
我已经将问题范围缩小到了cropperJS 中的问题,它与第2662-2667 行的代码有关:
if (self.ready && self.cropped) {
data = {
x: cropBoxData.left - canvasData.left,
y: cropBoxData.top - canvasData.top,
width: cropBoxData.width,
height: cropBoxData.height
};
// issue is below
ratio = imageData.width / imageData.naturalWidth;
each(data, function (n, i) {
n /= ratio;
data[i] = rounded ? Math.round(n) : n;
});
}
Run Code Online (Sandbox Code Playgroud)
如果我删除上面的“比率”代码,问题就解决了,但getCroppedCanvas由于裁剪图像添加了黑色背景,现在无法正常工作。 …