проблема с изображением - PullRequest
       1

проблема с изображением

2 голосов
/ 26 августа 2011

У меня есть приложение для Android, в котором я делаю фотографию с помощью камеры Android, затем я просматриваю фотографию, если она мне нравится, я загружаю изображение на веб-сайт.

Загрузка изображения на веб-сайт IВы заметили, что есть несколько пикселей, которые не видны на телефоне !!! На сайте есть несколько дополнительных деталей, которые не видны на экране телефона !!!

Изображение наэкран телефона настроен на просмотр изображения.

Это макет упражнения:

<ImageView  
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:layout_gravity="center"
android:scaleType="centerCrop"
android:id="@+id/myPic"
/>

<Button 
android:text="Confirm Photo"
android:layout_toLeftOf="@id/back"
android:id="@+id/confirm"
android:layout_marginTop="530dip"
android:layout_height="wrap_content" 
android:layout_width="165dip"
android:layout_alignParentRight="true"
>
   </Button>

 </RelativeLayout>

Вот какЯ установил изображение на imageview:

Bundle extras = getIntent().getExtras();
    BitmapFactory.Options options=new BitmapFactory.Options();
    options.inSampleSize =2;
    byte[] imageData = extras.getByteArray("imageData");
    Bitmap myImage = BitmapFactory.decodeByteArray(imageData , 0, imageData.length,options);


    Matrix mat=new Matrix();
mat.postRotate(90);
bitmapResult = Bitmap.createBitmap(myImage, 0, 0,  myImage.getWidth(),myImage.getHeight(), mat, true); 

    Canvas c = new Canvas(bitmapResult);
    drawTextImage(bitmapResult);
    StoreByteImage(this, bitmapResult,100);
ImageView imageView = (ImageView) findViewById(R.id.myPic);
imageView.setImageBitmap(bitmapResult);

Для получения дополнительного кода или других деталей я здесь, чтобы дать его вам. Спасибо

Ответы [ 4 ]

6 голосов
/ 26 августа 2011

Если вы говорите о том, что изображение на веб-сайте больше, чем изображение на вашем телефоне, то это потому, что для вашего типа масштаба установлено значение:

android:scaleType="centerCrop"

, а привязка к вашему просмотру изображения, вероятно, несопоставьте изображение (таким образом, изображение обрезается).Попробуйте добавить эту строку в просмотр изображений и посмотрите, имеет ли это значение.

android:adjustViewBounds="true"

Наконец, измените атрибуты высоты и ширины макета на:

layout_width="fill_parent"
layout_height="wrap_content"
2 голосов
/ 26 августа 2011

Если размер вашего изображения находится за пределами вашего ImageView при использовании атрибута scaleType:

android:scaleType="centerCrop"

Тогда ваше изображение будет обрезано и покажет только то, что подходит вашему ImageView.Чтобы обойти это, вот вспомогательный метод, который вы можете вызвать, чтобы уменьшить изображение до нужного вам размера.Может потребоваться некоторая настройка на вашем конце, чтобы соответствовать вашей ситуации, но это должно быть полезно.Это слегка измененная версия, найденная в Странно нехватка памяти при загрузке изображения в растровый объект :

public static Bitmap decodeFile(File f, int maxSize){
    if (f == null)
        return null;
    try {
        //Decode image size
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(new FileInputStream(f),null,o);

        //Find the correct scale value. It should be the power of 2.
        int width_tmp=o.outWidth, height_tmp=o.outHeight;
        int scale=1;
        while(true){
            if(width_tmp/2<maxSize || height_tmp/2<maxSize)
                break;
            width_tmp/=2;
            height_tmp/=2;
            scale*=2;
        }

        //Decode with inSampleSize
        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inSampleSize=scale;
        return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
    } catch (FileNotFoundException e) {}
    return null;
}
1 голос
/ 26 августа 2011

Согласно комментариям ниже вашего вопроса, это вызвано утверждением android:scaleType="centerCrop". Он скрывает границу вашего изображения, поскольку единственная часть, отображаемая на экране устройства, - это часть, которая ему подходит.

NSJonas подробно рассказал на этой странице о том, как сделать изображение подходящим для экрана.

0 голосов
/ 25 июня 2012

Звучит так, как будто вы хотите scaleType "centerInside" вместо "centerCrop".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...