我想使用JPEG编码器压缩图像,而不是将其写入文件,我想将压缩数据传递给另一个应用程序.我的问题是我可以压缩数据,但不知道如何获得压缩的图像数据.我正在使用此代码:
out = new FileOutputStream ( filename );
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder ( out );
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam ( bi );
param.setQuality ( 0.3f, false );
encoder.setJPEGEncodeParam ( param );
encoder.encode ( bi );
out.close();
Run Code Online (Sandbox Code Playgroud) 我有一个结构:
struct JFIF_HEADER
{
WORD marker[2]; // = 0xFFD8FFE0
WORD length; // = 0x0010
BYTE signature[5]; // = "JFIF\0"
BYTE versionhi; // = 1
BYTE versionlo; // = 1
BYTE xyunits; // = 0
WORD xdensity; // = 1
WORD ydensity; // = 1
BYTE thumbnwidth; // = 0
BYTE thumbnheight; // = 0
};
Run Code Online (Sandbox Code Playgroud)
这是我从文件中读取它的方式:
HANDLE file = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
DWORD tmp = 0;
DWORD size = GetFileSize(file, &tmp);
BYTE *DATA = new BYTE[size]; …Run Code Online (Sandbox Code Playgroud) JPEG的大小比PNG小.所以,我认为如果我可以将JPEG文件中的特定区域透明化,使用一些代码,也许我可以节省一些字节.
那么有谁知道如何使用PHP或JavaScript实现这一目标?
我试图检查是否存在远程JPEG文件.如果是,则显示另一个显示另一个.ASP中是否有任何方法可以检查非本地文件?
我在JPEG图像的EXIF标题的UserComment字段中有一些重要的元数据信息.我试图用它来检索它
NSData* jpgData = UIImageJPEGRepresentation(uiImage, 1.0);
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)jpgData, NULL);
NSDictionary *metadata = (__bridge NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source, 0, NULL);
NSDictionary *img_metadata = [metadata objectForKey:(NSString*)kCGImagePropertyExifDictionary];
NSString* user_comment = [img_metadata objectForKey:(NSString*)kCGImagePropertyExifUserComment];
Run Code Online (Sandbox Code Playgroud)
但是,我得到的img_metadata词典不再包含用户注释,即使它仍然有其他字段,如颜色空间和图像尺寸?有没有办法从UIImage对象获取用户注释?
我.jpg在目录中有一系列文件,希望使用来将它们转换成电影ffmpeg。当我制作.mp4所有jpeg文件时,视频质量几乎与原始图像相同。.webm但是,当我制作文件时,它看起来非常块状。这些是我正在使用的两个命令:
$ ffmpeg -i %10d.jpg -s 640x480 -r 16 test.mp4
$ ffmpeg -i %10d.jpg -s 640x480 -r 16 test.webm
Run Code Online (Sandbox Code Playgroud)
我几乎不了解视频编码,因此不胜感激。
我正在创建一个新的Bitmap对象,如下所示,
var image = new Bitmap(@"C:\file.jpg");
Run Code Online (Sandbox Code Playgroud)
我将在空间域中对像素级别进行多次修改,如果再次保存此对象,如下所示.
image.Save(@"D:\final.jpg", ImageFormat.bitmap);
Run Code Online (Sandbox Code Playgroud)
使用这个功能是否有一种方法可以节省jpg无损?
我正在研究pset4对Harvard的cs50x的恢复,因为open保持返回NULL而被卡住了.
// Read each 512 bytes until end of file is reached
FILE* img = NULL;
while (fread(&data, 512, 1, diskptr) == 1)
{
// Check for jpeg start
if (checkStart(data, jStart, jStartOE) == true)
{
jFound++;
if (jFound == 1)
{
printf("newfound\n");
// Name and open the first jpeg file
char title[12];
sprintf(title, "%03d.jpg", jFound - 1);
FILE* img = fopen(title, "w");
fwrite(&data, 512, 1, img);
}
else if (img != NULL)
{
printf("closed\n");
// Close old file
fclose(img); …Run Code Online (Sandbox Code Playgroud) 我有一个JPEG将由图像分析算法处理.它已在图片的角落标记,但我需要在处理之前删除标签.
但是:在Gimp中打开JPEG,编辑标签并重新保存,也会在标签之外引入图像内容的细微差别.在导出设置中,除了"使用原始图像的质量设置"之外,我已禁用了所有内容,但与原始图像进行比较时仍然存在微小的像素级差异.
有没有办法准确保留所有像素信息?或者这些变化在JPEG格式下是不可避免的?