我的程序既写入又读取这样的颜色数组:
struct Image {
size_t width;
size_t height;
struct Color *data;
}
struct Color {
char r;
char g;
char b;
}
Run Code Online (Sandbox Code Playgroud)
如何在 C 语言的屏幕上显示这样的数组?
如何将这些 BMP 文件转换为旧格式?
我试过:
mogrify -format bmp -define bmp:format=bmp4 *.bmp
Run Code Online (Sandbox Code Playgroud)
但它没有用。
imagemagick bitmap python-imaging-library imagemagick-convert scikit-image
从最近几天开始,我遇到的相机图像问题太小,尺寸为120 x 160.
场景是当我从相机捕获图像并将该图像转换为byte []时,它变得太小.
以下是我使用的代码:
Bitmap unscaledBitmap = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
unscaledBitmap .compress(Bitmap.CompressFormat.PNG, 30, bytes);
byte[] bytesDoc1 = bytes.toByteArray();
Run Code Online (Sandbox Code Playgroud)
对此没有任何了解,但是我已经尝试了许多解决方案,但都没有为我工作.
请帮我.
android bytearray bitmap android-camera android-camera-intent
我使用以下代码根据EXIF数据修复图像的方向
Image FixImageOrientation(Image srce)
{
const int ExifOrientationId = 0x112;
// Read orientation tag
if (!srce.PropertyIdList.Contains(ExifOrientationId)) return srce;
var prop = srce.GetPropertyItem(ExifOrientationId);
var orient = BitConverter.ToInt16(prop.Value, 0);
// Force value to 1
prop.Value = BitConverter.GetBytes((short)1);
srce.SetPropertyItem(prop);
// MessageBox.Show(orient.ToString());
// Rotate/flip image according to <orient>
switch (orient)
{
case 1:
srce.RotateFlip(RotateFlipType.RotateNoneFlipNone);
return srce;
case 2:
srce.RotateFlip(RotateFlipType.RotateNoneFlipX);
return srce;
case 3:
srce.RotateFlip(RotateFlipType.Rotate180FlipNone);
return srce;
case 4:
srce.RotateFlip(RotateFlipType.Rotate180FlipX);
return srce;
case 5:
srce.RotateFlip(RotateFlipType.Rotate90FlipX);
return srce;
case 6:
srce.RotateFlip(RotateFlipType.Rotate90FlipNone);
return srce;
case 7:
srce.RotateFlip(RotateFlipType.Rotate270FlipX); …Run Code Online (Sandbox Code Playgroud) 我正在使用内容解析器从图库中检索图像
final String[] columns = {MediaStore.Images.Media.DATA,
MediaStore.Images.Media._ID};
final String orderBy = MediaStore.Images.Media._ID;
Cursor imagecursor = context.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
null, orderBy);
int image_column_index = imagecursor
.getColumnIndex(MediaStore.Images.Media._ID);
count = imagecursor.getCount();
imageList = new ArrayList<Bitmap>();
for (int i = 0; i < count; i++) {
imagecursor.moveToPosition(i);
int id = imagecursor.getInt(image_column_index);
Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(
context.getContentResolver(), id,
MediaStore.Images.Thumbnails.MICRO_KIND, null);
imageList.add(b);
}
Run Code Online (Sandbox Code Playgroud)
如何检查位图宽高比是否为4:3,然后添加到arraylist?
我已经创建了ImageView,可以看到Camera的预览并将捕获的图像加载到ImageView中,并且我想将图像存储到内存中的目录中。我已经推荐了许多帖子并尝试过,但是我在内部存储器中找不到图像。这是我使用的代码:
package com.example.shravan.camera;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private final String TAG = "abc";
static final int REQUEST_IMAGE_CAPTURE =1 ;
ImageView iv;
Uri imageUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.myB);
iv = (ImageView) findViewById(R.id.myIV);
//disable the button if the …Run Code Online (Sandbox Code Playgroud) android bitmap android-imageview android-studio internal-storage
我目前正在Android项目中处理大量QR码,zxing是我首选的库.
为了实际显示生成的QR码,使用来自编码的信息创建位图.
QRCodeWriter writer = new QRCodeWriter();
BitMatrix matrix = writer.encode(message, BarcodeFormat.QR_CODE, px, px);
Bitmap bitmap = Bitmap.createBitmap(px, px, Bitmap.Config.RGB_565);
for (int x = 0; x < px; x++) {
for (int y = 0; y < px; y++) {
bitmap.setPixel(x, y, matrix.get(x,y) ? Color.BLACK : Color.WHITE);
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但速度非常慢.即使对于相当小的位图,整个过程也需要几秒钟.
有没有办法智能地加快这个过程(例如并行化)甚至更好的库?
提前致谢.
使用Google Drive Rest Api,我尝试使用此功能下载广告图片.
我得到一个包含以下代码的文件列表:
List<String> fileInfo = new ArrayList<>();
FileList result = mService.files().list()
.setPageSize(10)
.setQ("mimeType='image/jpeg'")
.setFields("nextPageToken, files(id, name)")
.execute();
List<File> files = result.getFiles();
if (files != null) {
for (File file : files) {
fileInfo.add(String.format("%s (%s)\n",
file.getName(), file.getId()));
}
}
Run Code Online (Sandbox Code Playgroud)
它有效.然后,使用文件ID,我获得一个带有以下代码的OutputStream:
String fileId = "file_id";
OutputStream fOut = new ByteArrayOutputStream();
mService.files().export(fileId,"image/jpeg").executeMediaAndDownloadTo(fOut);
Run Code Online (Sandbox Code Playgroud)
现在,我如何将其转换为文件然后转换为位图?
我以某种方式从Drawable文件夹中获取了Drawable图像,如下所示
Drawable thumb = mContext.getResources().getDrawable(R.drawable.image_name);
Run Code Online (Sandbox Code Playgroud)
我尝试这样
String image_name =thumb.getCurrent().toString();
Run Code Online (Sandbox Code Playgroud)
但是我需要的图像名称就是从拇指开始的图像名称。
怎么可能?
任何建议,评论,咨询;提供有用的链接受到高度赞赏。提前谢谢
我正在使用十六进制格式的888到565格式的位图.所以我想,以显示对使用SDL模拟器的位图,与帧缓冲区resoultion是16bit.
其中一个位图数据(第一行)看起来像那样
0x42, 0x4D, 0xFE, 0x82, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x28, 0x0, 0x0, 0x0, 0x7B, 0x0, 0x0, 0x0, 0x5A, 0x0, 0x0, 0x0, 0x1, 0x0, 0x18, 0x0, 0x0, 0x0,
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试在SDL上使用C++绘制该位图,但是我得到了带有扫描线的垃圾图像,看起来像是没有正确计算间距.
void Rasterizer::DrawBitmap(int w, int h, int x, int y, int transparent)
{
if (!bitmap)
return;
const uint8_t bytesPerPixel = 2;
uint16_t bytesPerRow = (bytesPerPixel * h ); // bytes Per Row including padding to 4 byte row boundary
uint16_t paddingSize = bytesPerRow - (bytesPerPixel * …Run Code Online (Sandbox Code Playgroud)