我正在尝试从SD卡读取图像,但我不确定我是否做得对。需要一些帮助
这是我阅读它的代码:
String imageInSD = "/sdcard/Hanud/" + c.getString(1) + ".PNG";
Bitmap bitmap = BitmapFactory.decodeFile(imageInSD);
ImageView myImageView = (ImageView)findViewById(R.id.imageview);
myImageView.setImageBitmap(bitmap);
这是我的主要文件:
<?xml version="1.0" encoding="utf-8"?>
<WebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- <ImageView
android:id="@+id/image"
android:scaleType="center"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>-->
<ImageView
android:id="@+id/imageview"
android:layout_gravity="center"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
/>
<TextView
android:id="@+id/myNameText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</WebView>
答案 0 :(得分:9)
应该是:
String imageInSD = Environment.getExternalStorageDirectory().getAbsolutePath() +"/Hanud/" + c.getString(1) + ".PNG";
Bitmap bitmap = BitmapFactory.decodeFile(imageInSD);
ImageView myImageView = (ImageView)findViewById(R.id.imageview);
myImageView.setImageBitmap(bitmap);
这将确保您找到正确的目录!
答案 1 :(得分:4)
您可以使用以下代码:
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard.getAbsolutePath() + "/Pictures");
File file = new File(directory, "image_name.jpg"); //or any other format supported
FileInputStream streamIn = new FileInputStream(file);
Bitmap bitmap = BitmapFactory.decodeStream(streamIn); //This gets the image
streamIn.close();
您需要在try / catch块中运行FileInputStream。
答案 2 :(得分:0)
首先定义xml
<? Xml version = “1.0″ encoding = “utf-8″?>
<RelativeLayout xmlns: android = “http://schemas.android.com/apk/res/android”
android: orientation = “vertical”
the android: layout_width = “fill_parent The
android: layout_height = “fill_parent The
android: background = “55 million”
>
<ImageSwitcher / / this control with the Gallery often used, remember
android: id = “@ + the id / in switcher ‘”
the android: layout_width = “wrap_content The
android: layout_height = “350dip The
android: layout_alignParentLeft = “true”
android: layout_alignParentRight = “true”
/>
< Gallery
android: id = “@ + id / mygallery”
the android: layout_width = “fill_parent The
android: layout_height = “80dp”
android: layout_alignParentBottom = “true”
android: layout_alignParentLeft = “true”
android: gravity = “center_vertical”
android: spacing = “16dp”
/>
</ RelativeLayout>
两个。自定义显示中的活动
package com.ldci.second.mypnone;
import java.io.File;
import java.util.ArrayList;
import of java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import the android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.ViewSwitcher;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Gallery.LayoutParams;
public class BgPictureShowActivity extends Activity implements
AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory {
the private List <String> the ImageList;
private String [] list;
private ImageSwitcher mSwitcher;
public void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
/ / / / Remove the status bar, and display their own program name
/ / GetWindow (). SetFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
/ / WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView (R.layout.pictureshow);
The ImageList the getSD ();
list = ImageList.toArray (new String [ImageList.size ()]);
/ * Set the Switcher * /
mSwitcher = (ImageSwitcher) findViewById (R.id.switcher);
mSwitcher.setFactory (this);
/ * Set the load Switcher mode * /
mSwitcher.setInAnimation (AnimationUtils.loadAnimation (this,
android.R.anim.fade_in));
/ * Set output Switcher mode * /
mSwitcher.setOutAnimation (AnimationUtils.loadAnimation (this,
android.R.anim.fade_out));
mSwitcher.setOnClickListener (new OnClickListener () {
public void onClick (View v) the {
Toast.makeText (BgPictureShowActivity.this, “click”, Toast.LENGTH_SHORT). The show ();
}
});
Gallery g = (Gallery) findViewById (R.id.mygallery);
/ * Add several ImageAdapter to and set to the Gallery object * /
g.setAdapter (new ImageAdapter (this, getSD ()));
g.setOnItemSelectedListener (this);
/ * Set a itemclickListener event * /
g.setOnItemClickListener (new OnItemClickListener ()
{
public void the onItemClick (AdapterView, which <?> parent,
View v, int position, long id)
{
Toast.makeText (BgPictureShowActivity.this, “dianjiale”, Toast.LENGTH_SHORT). Show ();
}
});
}
private List <String> getSD ()
{
/ * Set the current path * /
The the List <String> it = the new ArrayList <String> ();
File f = new File (“/ sdcard /”);
File [] files = f.listFiles ();
/ * All the files stored in the ArrayList * /
for (int i = 0; i <files.length; i + +)
{
The File the file = files [i];
if (getImageFile (file.getPath ()))
it.add (file.getPath ());
}
return it;
}
private boolean getImageFile (String fName)
{
a boolean the re;
/ * Get the extension * /
String end = fName.substring (fName.lastIndexOf (“.”) +1,
fName.length ()). toLowerCase ();
/ * Decided by the type of extension The MimeType * /
if (end.equals (“jpg”) | | end.equals (“gif”) | | end.equals (“png”)
| | End.equals (“jpeg”) | | end.equals (“bmp”))
{
re = true;
}
else
{
re = false;
}
return the re;
}
/ * To rewrite BaseAdapter custom one ImageAdapter class * /
public class ImageAdapter the extends BaseAdapter,
{
/ * Declare variables * /
int mGalleryItemBackground;
private Context mContext;
private the List <String> of lis;
/ * ImageAdapter, constructed character * /
the public ImageAdapter (Context c, the List <String> li)
{
mContext = c;
of lis = li;
/ * Res / values / attrs.xml <declare-styleable> defined
* Gallery attribute * /
TypedArray a = obtainStyledAttributes (R.styleable.Gallery);
/ * Obtain attribute Gallery Index id * /
mGalleryItemBackground = a.getResourceId (
R.styleable.Gallery_android_galleryItemBackground, 0);
/ * Let the object styleable properties can be used repeatedly * /
a.recycle ();
}
/ * A few set to rewrite the getCount, the number of returned images * /
public int the getCount ()
{
return lis.size ();
}
/ * Must override the method getItem, returns the position * /
Public Object getItem (int position)
{
the return position;
}
/ * Must be rewritten getItemId pass and position * /
public long getItemId (int position)
{
the return position;
}
/ * A few set to rewrite the method getView pass and View objects * /
public View getView (int position, View convertView,
Of ViewGroup that the parent)
{
/ * Generate the ImageView object * /
ImageView i = new ImageView (mContext);
/ * Set the picture to imageView object * /
Bitmap bm = BitmapFactory.decodeFile (lis.
get (position). toString ());
i.setImageBitmap (bm);
/ * Reset the image width and height * /
i.setScaleType (ImageView.ScaleType.FIT_XY);
/ * Reset the Layout of the width and height * /
i.setLayoutParams (new Gallery.LayoutParams (136, 88));
/ * Set the Gallery background images * /
i.setBackgroundResource (mGalleryItemBackground);
/ * Pass back to imageView object * /
return i;
}
}
public void onItemSelected (AdapterView <?> parent, View view, int position,
long id) {
The string photoURL = list [position];
Log.i (“A”, String.valueOf (position));
mSwitcher.setImageURI (Uri.parse (photoURL));
}
public void onNothingSelected (AdapterView <?> parent) {
/ / TODO Auto-generated method the stub
}
public View makeView () {
ImageView i = new ImageView (this);
i.setBackgroundColor (0xFF000000);
i.setScaleType (ImageView.ScaleType.FIT_CENTER);
i.setLayoutParams (new ImageSwitcher.LayoutParams (
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
return i;
}
}
这段代码很长,看到肯定会头疼加丹痛,但坚持MARS上帝一再警告我们这个行业的特点就是耐心等待。
有一件非常重要的事情,在values文件夹中,在书中创建一个xml:
<? Xml version = “1.0″ encoding = “utf-8″?>
<resources>
<declare-styleable name=”Gallery”>
<attr name=”android:galleryItemBackground” />
</ Declare-styleable
</ Resources>
http://developer.aiwgame.com/gallery-show-an-image-from-android-sd-card.html
答案 3 :(得分:0)
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 3;
Bitmap bitmap = BitmapFactory.decodeFile(f.get(position),options);
答案 4 :(得分:0)
This is the code
public class MainActivity extends AppCompatActivity {
private ImageView mImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView= (ImageView) findViewById(imageView);
}
public void openImages(View view) {
Intent intent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.INTERNAL_CONTENT_URI);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("scale", true);
intent.putExtra("outputX", 256);
intent.putExtra("outputY", 256);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("return-data", true);
startActivityForResult(intent, 1);
}
public void openCamera(View view) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, 2);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) {
return;
}
if (requestCode == 1) {
final Bundle extras = data.getExtras();
if (extras != null) {
//Get image
Bitmap newProfilePic = extras.getParcelable("data");
mImageView.setImageBitmap(newProfilePic);
}
}
if(requestCode==2){
final Bundle bundle=data.getExtras();
if(bundle !=null){
Bitmap camera_pic=bundle.getParcelable("data");
mImageView.setImageBitmap(camera_pic);
}
}
}
}
答案 5 :(得分:0)
您可以使用以下代码。您可以选择任何图像文件,并且不必担心目录路径,因为它也会自动解析。
Java版本:
import static android.app.Activity.RESULT_OK;
private Bitmap bitmap;
private Uri filePath;
private int GET_IMAGE = 1;
private void showFileChooser() {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, GET_IMAGE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GET_IMAGE && resultCode == RESULT_OK && data != null && data.getData() != null) {
filePath = data.getData();
try {
bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), filePath);
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
Toast.makeText(this,"Error Loading Image!!!", Toast.LENGTH_SHORT).show()
}
}
}
科林版本:
import android.app.Activity.RESULT_OK
private val GET_IMAGE = 1
private lateinit var filePath : Uri
private lateinit var bitmap : Bitmap
private fun selectImage() {
var photoPickerIntent : Intent = Intent(Intent.ACTION_PICK)
photoPickerIntent.setType("image/*")
startActivityForResult(photoPickerIntent, GET_IMAGE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(requestCode == GET_IMAGE && resultCode == RESULT_OK && data != null){
filePath = data.data
try{
bitmap = MediaStore.Images.Media.getBitmap(activity!!.contentResolver, filePath)
imageView!!.setImageBitmap(bitmap)
}catch (exception : IOException){
Toast.makeText(activity,"Error Loading Image!!!", Toast.LENGTH_SHORT).show()
}
}
}