标签: bitmap

无法在SD卡中创建文件

我试图将位图保存到文件,然后将其保存在SD卡上.这是我的代码:

String path = Environment.getExternalStorageDirectory().toString();
File file = new File(path, "Jhs"+".jpg");
file.mkdir();
OutputStream fOut;
try {
    fOut = new FileOutputStream(file);
    BitmapMatrix convMatrix = new BitmapMatrix(0);
    convMatrix.result.compress(Bitmap.CompressFormat.JPEG, 100, fOut);

    fOut.flush();
    fOut.close();
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

此代码也在一个不扩展Activity的类中.我只是给出了这个信息,认为可能存在一些问题.这是我的LogCat

05-01 18:00:22.555: W/System.err(31392): java.io.FileNotFoundException:           /mnt/sdcard/Jhs.jpg (Permission denied)
05-01 18:00:22.555: W/System.err(31392):    at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
05-01 18:00:22.555: W/System.err(31392):    at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
05-01 18:00:22.555: W/System.err(31392):    at java.io.FileOutputStream.<init>(FileOutputStream.java:94)
05-01 18:00:22.555: W/System.err(31392): …
Run Code Online (Sandbox Code Playgroud)

android file bitmap sd-card

2
推荐指数
1
解决办法
7007
查看次数

在ActionBarSherlock中将位图设置为主图标

有没有办法将位图(表示从地址簿中检索的联系人照片)设置为ActionBarSherlock中的主页图标.

icons android bitmap actionbarsherlock

2
推荐指数
1
解决办法
2372
查看次数

Android - 将字符串转换为byte []

我想将"icon"的字符串转换为字节数组,然后将其转换为Bitmap.问题是模拟器中的图像没有显示.我想我做得不对,但我知道为什么.非常感谢你的帮助.提前致谢

这是我的JSON数据:

{
    "project": [
        {
            "abbreviation": "abd",
            "customer": "customer1",
            "description": "description1",
            "icon": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC4UlEQVR42sXTXUhTYRgH8NNNXkTdmPlRpltqalgXZlB4hCC6C8VyYjErtbCoNLJiqQmOtqmYCkUXdhNEGSHYuVXCj81N58dcO+rOPt3c2dnOWTubeSPUv6PZx1U3XfTAj4f3gf/zXL0E8d+LoqgEw+RkvnnOWmi22H6Ytx4bHRtLSt2XSKhUqr8vkMKFYS5I8y5LhGemBYEx8xHPp3CICxpoevFcf3//LrVanaDRaBK0Wu0WnU632XdK8x3E1MxcSZR1Cez7ewgM1IEdqEWYasW6yCMajQqBQGDE5/N98Hq9lNvtppxOJ8UwDEXT9LuJiYmThMlkIuMxUVgXQ1KIw5doEGufOcRjMYiiiEgkAp7nwXEcWJaF3+/HysoKnC7XxtTUdA1hNBrJzUvx+Bpi8Thisbh0+XcwFAohyIUQYANS0A2P2wGXyw6GWdyYMo7VEXq9nuR5QSpeCnDgw0GEQ6x0MQA24MeqzwPvwhiWXzeD7q6CrecibL2XYO2s+DrzoGCEGNcbilmfk3e8fYSlXiWWn13F8vMaLD27gsU+JWydFbDcLcRsVTJmFEmYqdym2AuzcreDGNWbij02A79w/wTmlOmYqz74y6zypwzMVmdi9vIfqjNgrk0cJz5OmIoZI8Vb7kkLruVK8rblbpm/dhjz1yX1ObBsuvHD5tt8K3WQGB43FtPDr3hLYxEW6o/CWl8A280jWLydh+XGHDBNWXA+lMOpksHVnAlnSyYcrTLYW+SwtqS9kBZMkrahPoG+Uwh7w1G4m/LgV2Uh2CZDWJ0BQZOOSMd+RDpTIXSlgJdwnWlY7TjwjdGmtRFvBoeK9C9b7fMNx2J0U67oeHRI9D6WiavtcjH4JEvktBKdXJIusrpU0a9NFj2aFNHefiBsUGVcJk6fObunqbq0SF2aX6IpyyY7yrPIrvPZZHdFDtmjyCV7K/O3+lOFNFPIya4KGdlxQUa2l8lPlR9PS/nnz/gdnPcTQcpv7vgAAAAASUVORK5CYII=",
            "name": "projectname1",
            "plannedEndDate": "2012-05-25T00:00:00+01:00",
            "plannedStartDate": "2012-05-23T00:00:00+01:00",
            "projectStatus": {
                "name": "Opened"
            },
            "realEndDate": "2012-05-25T00:00:00+01:00",
            "realStartDate": "2012-05-23T00:00:00+01:00"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我这样做了,但它不起作用:

// convert String to byte[]
String stringToConvert = project.getIcon();
byte[] theByteArray = stringToConvert.getBytes();

// convert Byte[] to Bitmap
Bitmap bm = BitmapFactory.decodeByteArray(theByteArray,
        0, theByteArray.length);
DisplayMetrics dm = new DisplayMetrics();

holder.imageIcon.setMinimumHeight(dm.heightPixels);
holder.imageIcon.setMinimumWidth(dm.widthPixels);
holder.imageIcon.setImageBitmap(bm);
Run Code Online (Sandbox Code Playgroud)

android bytearray bitmap

2
推荐指数
1
解决办法
9373
查看次数

位图太大,无法在缩小后上传到纹理中

我做了一个有很大背景的应用程序.它在Nexus 7上完美运行,但在我的Galaxy Nexus上,背景消失了,并在logcat中给出了错误:位图太大而无法上传到纹理(...).

我已经阅读了这篇文章并使用了那里的代码.我用来设置背景的代码是这样的:

Display display = getWindowManager().getDefaultDisplay();
    width = display.getWidth();
    height = display.getHeight();


    //-------------------------------------------------------------------------------------------------------------

    ImageView achtergrond = (ImageView)findViewById(R.id.achtergrond);
    achtergrond.setImageBitmap(decodeSampledBitmapFromResource(getResources(), R.drawable.achtergrond, width, height));
} (...)

public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
        int reqWidth, int reqHeight) {

    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(res, resId, options);

    // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeResource(res, resId, options); …
Run Code Online (Sandbox Code Playgroud)

android bitmap android-imageview

2
推荐指数
1
解决办法
2556
查看次数

如何在BitmapFactory中保持图像质量相同

我已将位图图像转换为字符串以保存它:

............
Bitmap photo = extras.getParcelable("data");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
Run Code Online (Sandbox Code Playgroud)

然后我从字符串中检索位图以设置活动的背景,如下所示:

byte[] temp = Base64.decode(encodedImage, Base64.DEFAULT);
Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap bitmap = BitmapFactory.decodeByteArray(temp, 0,
                temp.length, options);
Drawable d = new BitmapDrawable(getResources(), bitmap);
getWindow().setBackgroundDrawable(d);
Run Code Online (Sandbox Code Playgroud)

一切正常,但图像质量大大降低.如何保持图像质量与原始图像相同?我在这里做错了什么,降低了质量?

android bitmap bitmapfactory

2
推荐指数
2
解决办法
1万
查看次数

麻烦使对象移动一圈

我是android新手.我正在使用我在youtube上找到的教程.该应用程序在画布上绘制一个球的图片,然后对角移动.我想让球移动一圈.我已经找到了一些关于圆周运动基本数学的信息,但是我在实现它时遇到了麻烦.有人可以看看我的代码并告诉我我做错了什么.谢谢.

这是我的代码:

public class DrawingTheBall extends View {

Bitmap bball; 
int x,y;

public DrawingTheBall(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    bball = BitmapFactory.decodeResource(getResources(), R.drawable.blueball);
    x = 0;
    y = 0;
}

@Override
public void onDraw(Canvas canvas){
    super.onDraw(canvas);

    Rect ourRect = new Rect();
    ourRect.set(0, 0, canvas.getWidth(), canvas.getHeight()/2);
    float a = 10;
    float b = 10;
    float r = 20;
    double theta = 0;
    theta = Math.toRadians(45);

    Paint blue = new Paint();
    blue.setColor(Color.BLUE);
    blue.setStyle(Paint.Style.FILL);

    canvas.drawRect(ourRect, blue);

    if(x < canvas.getWidth()){
        //x …
Run Code Online (Sandbox Code Playgroud)

java animation android bitmap android-canvas

2
推荐指数
2
解决办法
1万
查看次数

StretchBlt()不会创建镜像

根据MSDN:

如果nWidthSrc和nWidthDest参数的符号或者nHeightSrc和nHeightDest参数不同,StretchBlt将创建位图的镜像.

所以我尝试创建颠倒的图像.我有一个类看起来像这样:

class Picture
{
 private:
 HBITMAP bmp; //Bitmap
 HDC pdc; //Device context
 short int w; //Weidth of bitmap
 short int h; //Heighth of bitmap

 public:
 short int x;
 short int y;
 void draw(HDC);
 void upside_down();
}
Run Code Online (Sandbox Code Playgroud)

我有这个方法:

void Picture::upside_down()
{
 HDC dc = CreateCompatibleDC(pdc);
 HBITMAP bmap = CreateCompatibleBitmap(pdc, w, h);
 SelectObject(dc, bmap);
 BitBlt(dc, 0, 0, w, h, pdc, 0, 0, SRCCOPY);
 StretchBlt(pdc, 0, 0, w, h, dc, 0, 0, w, -h, SRCCOPY);
 DeleteDC(dc);
 DeleteObject(bmap);
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,没有任何反应.我想知道它是否具有DC兼容性,我总是在理解其背后的逻辑时遇到问题.

那么,我应该怎么做才能让我的位图翻转?

c++ winapi gdi bitmap stretchblt

2
推荐指数
1
解决办法
2143
查看次数

如何压缩Camera.takepicture拍摄的照片

我正在开发一个应用程序,用户可以通过我的CameraActivity(SurfaceView + Camera)拍摄照片并保存.之后,将处理位图.

说让我带你了解细节.图片拍摄时间:

mCamera.takePicture(null, null, new PictureCallback() {...}
Run Code Online (Sandbox Code Playgroud)

我没有指定.jpeg质量.
使用HTC One S进行测试,拍摄照片然后保存.图片大小永远不会超过100kb
使用三星GT-I9000进行测试,拍摄照片然后保存,但这里的差异是尺寸,超过1,2Mb.

因为我需要处理后面的位图,当我尝试解码bimap来处理它时,我对GT-I9000 有一些OutOfMemory问题:

try {
    FileInputStream fis = new FileInputStream(new File(imagePath));
    Bitmap savedPicture = BitmapFactory.decodeStream(fis);
Run Code Online (Sandbox Code Playgroud)


我试图改变,Camera Parameters .setJpegQuality(quality)但我没有产生巨大的变化.

图像将占用所有的屏幕大小,我使用这种方法有效地加载大位图 它工作,我摆脱了OutOfMemory Exceptions但我仍然有一些问题:

  1. 设备之间的文件大小差异?我认为HTC One S比GT-I9000好,为什么不保存更大的图片呢?

  2. 图像分辨率,HTC One S 640x480,GT-I9000 2560x1920为什么?那回答第一个问题,但为什么会这样呢?

谢谢你的时间 ;)

compression camera android jpeg bitmap

2
推荐指数
1
解决办法
2806
查看次数

C#使用iTextSharp将位图保存为PDF

下面的代码从窗体上的控件创建一个位图,然后显示一个保存对话框以保存为JPEG.任何人都可以帮助使用iTextSharp将Bitmap bm保存为PDF吗?

 Bitmap bm = null;
 bm = new Bitmap(this.RCofactorTBS.SelectedTab.Width, this.RCofactorTBS.SelectedTab.Height);
 this.RCofactorTBS.SelectedTab.DrawToBitmap(bm, this.RCofactorTBS.SelectedTab.ClientRectangle);

 SaveFileDialog dialog = new SaveFileDialog();
 dialog.Filter = "JPEG|*.jpeg";
 dialog.Title = "Save Test As Jpeg";
 dialog.ShowDialog();

 if (dialog.FileName != "" && bm != null)
 {
    bm.Save(dialog.FileName);
 }
Run Code Online (Sandbox Code Playgroud)

c# pdf bitmap

2
推荐指数
1
解决办法
1万
查看次数

在图像裁剪上失去了很多质量

我从相机捕获图像,然后保存它做sqlite数据库.

之后,我允许用户裁剪它.整个过程质量非常差.

我在Nexus7上测试它,我知道它的前置摄像头很差,但是在裁剪应用程序打开后,图片非常小.在作物活动中它需要1/5的creen,我不知道为什么.

这会发生什么onActivityResult(拍摄拍摄的照片)

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {  
        Bitmap bitmap = (Bitmap) data.getExtras().get("data");          
        String path = Images.Media.insertImage(getActivity().getContentResolver(), bitmap, "Title", null);
        Uri imageUri = Uri.parse(path);
        if (!doCrop(imageUri)) saveNewAvatar(bitmap);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是doCrop(Uri uri)方法:

private void doCrop(final Uri imageUri) {
    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setType("image/*");

    List<ResolveInfo> list = getActivity().getPackageManager().queryIntentActivities( intent, 0 );

    int size = list.size();

    intent.setData(imageUri);

    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    intent.putExtra("scale", true); …
Run Code Online (Sandbox Code Playgroud)

android bitmap android-camera-intent

2
推荐指数
1
解决办法
3240
查看次数